无法在 VS C++ 中使用 unicode,尽管选项启用了它

Can't use unicode in VS C++, despite options enabling it

本文关键字:选项 启用 unicode VS C++      更新时间:2023-10-16

我在代码中不断收到此警告:

warning C4819: The file contains a character that cannot be represented in the current code page (0). Save the file in Unicode format to prevent data loss

我已经完成了这个问题中建议的操作,使用高级保存选项并在没有 BOM 的情况下以 unicode 保存,但这不起作用;我在项目属性中尝试了"使用 Unicode 字符集",但这也不起作用。为什么它不能处理 unicode?作为参考,我有以下行冲刺 unicode 字符:

sprintf(mac, "x02x60x8c%c%c%c", (num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff);

就文件而言,x8c不是一个字符。 它是一系列 (ASCII( 字符,编译器将在编译时(即收到错误时(尝试将其解释为字符。

编译器将根据文件是否为 BOM 来记录文件是否采用 Unicode 编码。 由于您在没有 BOM 的情况下保存了它,因此它在本地代码页(即 Shift-JIS(中被解释。

维基百科告诉我,在Shift-JIS中,x8c是双字节字符的第一个字节。 我怀疑下一个字节(x25,这是'%'的值(不是有效的第二个字节。 因此,编译器无法将x8c映射到 Unicode 字符。

诊断消息具有误导性,因为它是在假设程序员通过将实际的 Unicode 代码点放入其源文件中而不将它们另存为 Unicode 文件而遇到此问题的情况下编写

的。