我正在编写一个中文软件,并在源文件中嵌入了一些字符串。为了减少运行时开销(好吧,实际上这是过早的优化,因为速度差异可以忽略不计,但尽管如此,我很好奇),当我使用 QStringLiteral
和中文字符时,例如
QString s = QStringLiteral("中文");
字符串显示为乱码;但如果我只是使用
QString s = "中文";
它工作正常。但是后者在运行时而不是编译时构造字符串,所以速度稍慢。谁能告诉我如何解决这个问题?
我的源文件编码是没有BOM的UTF8;编译器是带有 SP1 的 MSVC 2010 Express。我也试过了
#pragma execution_character_set("utf-8")
没用。
最佳答案
好的,我自己解决了。我需要用字节顺序标记保存文件,然后 MSVC 正确识别它是用 UTF-8 编码的,一切正常。
更新:在较新的 MSVC 上,我们可以设置编译器选项 /utf-8
而不必理会 BOM。
关于c++ - 为什么QStringLiteral返回乱码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305492/