我一直在调试一个应用程序,为什么双字节字符语言没有出现。在内部,代码将所有字符串存储为 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 上运行。
有没有其他人被这个令人抓狂的错误击中?我正在寻找想法。