2

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

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

例如有

wchar_t *txt="hello";

以 utf8 编码

4

1 回答 1

1

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

大部分重要的内容都还在,虽然有些图片坏了。简而言之:

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

    在 Visual Studio 2008 中,这可以通过位于文件菜单中的高级保存命令直接从 IDE 完成。将弹出一个对话框。选择带签名的 UTF-8。

  2. 如果你编译并运行一个测试程序,[你不会得到预期的结果。] 发生的情况是,虽然你的文本以 UTF-8 正确编码,但出于兼容性原因,C/C++ 运行时默认设置为“C”语言环境。此语言环境假定所有 char 都是 1 个字节。嗯。亲爱的,UTF-8 并非如此!

    您需要使用该setlocale函数更改语言环境,以使输入输出流处理器正确解释字符串。

    在我们的例子中,无论系统使用什么语言环境都可以,这是通过传递“”作为第二个参数来完成的。

  3. 严谨一点,一定要检查setlocale的返回值,如果返回0,说明出错。在多语言应用程序中,您需要更精确地使用 setlocale,明确提供您想要使用的语言环境(例如,您可能希望您的应用程序在日语计算机上显示俄语文本)。

我不知道有什么好方法可以将其设为默认值。我很确定这是不可能的。如果您要为 Unicode 编译,Windows 应用程序非常喜欢 UTF-16。如果可能,您应该转换为该格式。

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

于 2011-04-17T11:26:39.917 回答