是否可以强制 Visual Studio 默认对所有字符串使用 UTF-8 编码?
例如有
wchar_t *txt="hello";
以 utf8 编码
是否可以强制 Visual Studio 默认对所有字符串使用 UTF-8 编码?
例如有
wchar_t *txt="hello";
以 utf8 编码
这篇博客文章看起来很有希望:UTF-8 字符串和 Visual C++
大部分重要的内容都还在,虽然有些图片坏了。简而言之:
第一步,您必须确保源文件使用字节顺序标记 (BOM) 进行 UTF-8 编码。BOM 是极其重要的东西,没有它,C++ 编译器将无法正常运行。
在 Visual Studio 2008 中,这可以通过位于文件菜单中的高级保存命令直接从 IDE 完成。将弹出一个对话框。选择带签名的 UTF-8。
如果你编译并运行一个测试程序,[你不会得到预期的结果。] 发生的情况是,虽然你的文本以 UTF-8 正确编码,但出于兼容性原因,C/C++ 运行时默认设置为“C”语言环境。此语言环境假定所有 char 都是 1 个字节。嗯。亲爱的,UTF-8 并非如此!
您需要使用该
setlocale
函数更改语言环境,以使输入输出流处理器正确解释字符串。在我们的例子中,无论系统使用什么语言环境都可以,这是通过传递“”作为第二个参数来完成的。
严谨一点,一定要检查setlocale的返回值,如果返回0,说明出错。在多语言应用程序中,您需要更精确地使用 setlocale,明确提供您想要使用的语言环境(例如,您可能希望您的应用程序在日语计算机上显示俄语文本)。
我不知道有什么好方法可以将其设为默认值。我很确定这是不可能的。如果您要为 Unicode 编译,Windows 应用程序非常喜欢 UTF-16。如果可能,您应该转换为该格式。
_T("string")
否则,我能想到的最佳选择是定义一个使用上述逻辑转换为 UTF-8的简单宏(类似于在 Windows 标头中定义的东西)。