是否可以在VisualStudio2008中默认使用UTF-8编码

Is it possible to use UTF-8 encoding by default in Visual Studio 2008?

本文关键字:UTF-8 编码 默认 VisualStudio2008 是否      更新时间:2023-10-16

可能重复:
如何在Visual C++2008 中创建UTF-8字符串文字

是否可以强制Visual Studio在默认情况下对所有字符串使用UTF-8编码?

例如,有

wchar_t *txt="hello";

编码在utf8 中

这篇博客文章看起来很有前景:UTF-8字符串和Visual C++

大部分重要内容仍然存在,尽管有些图片已经损坏。简而言之:

  1. 第一步,您必须确保源文件是用字节顺序标记(BOM(UTF-8编码的。BOM是一个极其重要的东西,如果没有它,C++编译器将无法正常运行。

    在Visual Studio 2008中,可以使用位于"文件"菜单中的"高级保存"命令直接从IDE中执行此操作。将弹出一个对话框。选择带有签名的UTF-8。

  2. 如果你编译并运行一个测试程序,[你不会得到预期的结果。]结果是,尽管你的文本是用UTF-8正确编码的,但出于兼容性的原因,C/C++运行时默认设置为"C"语言环境。此区域设置假定所有字符都是1字节。嗯。UTF-8不是这样,亲爱的!

    您需要使用setlocale函数更改区域设置,以便输入输出流处理器正确解释字符串。

    在我们的例子中,系统使用的任何语言环境都很好,这是通过将"作为第二个参数来完成的。

  3. 为了严格起见,您必须检查setlocale的返回值,如果它返回0,则表示发生错误。在多语言应用程序中,您需要更精确地使用setlocale,明确地提供要使用的区域设置(例如,您可能希望应用程序在日语计算机上显示俄语文本(。

我不知道有什么好方法可以让它成为默认值。我确信这是不可能的。如果您正在为Unicode进行编译,Windows应用程序强烈更喜欢UTF-16。如果可能的话,你应该转换成那种格式。

否则,我能想到的最好的选择就是定义一个简单的宏(类似于Windows标头中定义的_T("string")(,使用上面的逻辑将其转换为UTF-8。