可能重复:
How to create a UTF-8 string literal in Visual C++ 2008
默认情况下是否可以强制Visual Studio对所有字符串使用UTF-8编码?
例如有
wchar_t *txt="hello";
以utf8编码
答案 0 :(得分:1)
这篇博客文章看起来很有希望: UTF-8 strings and Visual C++
大部分重要内容仍然存在,即使有些图片被破坏了。简而言之:
第一步,您必须确保源文件是UTF-8编码的字节顺序标记(BOM)。 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。如果可能,您应该转换为该格式。
否则,我能想出的最好的选择是定义一个简单的宏(类似于Windows头中定义的_T("string")
),使用上述逻辑转换为UTF-8。