为什么QStringLiteral返回一个乱码字符串

Why does QStringLiteral returns a garbled string

本文关键字:一个 码字 字符串 QStringLiteral 返回 为什么      更新时间:2023-10-16

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

QString s = QStringLiteral("中文");

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

QString s = "中文";

它运行良好。但是后者在运行时而不是编译时构造字符串,所以它有点慢。有人能告诉我怎么解决这个问题吗?

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

#pragma execution_character_set("utf-8")

但无济于事。

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


更新:在更新的MSVC上,我们可以设置编译器选项/utf-8,而不必麻烦BOM。