为什么QStringLiteral返回乱码字符串

时间:2014-04-26 01:25:24

标签: c++ qt unicode

我正在编写一个中文软件,并在源文件中嵌入了一些字符串。为了减少运行时开销(嗯,实际上这是过早的优化,因为速度差异可以忽略不计,但我很好奇),当我使用QStringLiteral时使用中文字符

QString s = QStringLiteral("中文");

屏幕上显示字符串时出现乱码;但如果我只是使用

QString s = "中文";

工作正常。但是后者在运行时而不是编译时构造字符串,所以它稍慢一点。有人可以告诉我如何解决这个问题吗?

我的源文件编码是UTF8,没有BOM;编译器是带有SP1的MSVC 2010 Express。我也试过

#pragma execution_character_set("utf-8")

无济于事。

1 个答案:

答案 0 :(得分:3)

好的,我自己解决了。我需要用字节顺序标记保存文件,然后MSVC正确识别它以UTF-8编码,一切正常。