0

我一直在调试一个应用程序,为什么双字节字符语言没有出现。在内部,代码将所有字符串存储为 char*,即使它在显示时对其进行了适当的转换。

我通过使用适当的语言代码使用 WideCharToMultiByte() 解决了日语和俄语的问题。例如,日语使用 936 的代码页。一旦我设置它,它就像一个魅力。还有一些安装语言和语言包的步骤。

但是,不知何故,我的机器进入了一个奇怪的状态,它希望在该状态下打开文件。

一个完美的例子是(以日文 Shift-JIS 开头):

//Copyright � 1996-2008

但是未经编辑的文件(在源代码管理中)显示如下:

//Copyright © 1996-2008

当我尝试编译它们时,某些文件(如 barf 上方的片段)——它们是我不打算编辑的 SDK 的一部分,它以前从未发生在我身上,并且不会影响团队中的其他任何人。

我得到的错误是:

1>e:\projects-----\sdk\sdkheader.h : 错误 C2220: 警告被视为错误 - 没有生成“对象”文件 1>e:\projects-----\sdk\sdkheader.h :警告 C4819:文件包含当前代码页 (932) 中无法表示的字符。以 Unicode 格式保存文件以防止数据丢失 1>e:\projects-----\sdk\sdkheader.h : 警告 C4819: 该文件包含当前代码页中无法表示的字符 (932)。以 Unicode 格式保存文件以防止数据丢失

每当我尝试“使用编码”打开文件时,它都会将日文 Shift-JIS 显示为首选。我可以将它保存为 Unicode,它编译得很好,但改变 SDK 文件不是一种选择。

我的键盘设置为 ENG,重新启动和恢复文件并不能解决问题。我似乎永远陷入这种模式,无法弄清楚如何恢复正常。我在 Windows 8 上运行。

有没有其他人被这个令人抓狂的错误击中?我正在寻找想法。

4

1 回答 1

1

原来是我的系统区域设置为日语。在 Windows 8 中,有几个不同的区域可以设置这些东西,但不知何故我错过了那个。

于 2013-07-17T15:43:16.433 回答