【发布时间】:2018-07-20 05:15:18
【问题描述】:
我有一个原始测试:msvc2015 和 Qt5.9.3 中的项目。
文件main.cpp 以 Unicode 格式保存为带有签名的 UTF-8:
我尝试显示应该显示一些俄语文本的消息框。整个代码:
#include <QtWidgets/QApplication>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString ttl = QString::fromUtf8("russian_word_1");
QString txt = QString::fromUtf8("russian_word_2");
QMessageBox::information(nullptr, ttl, txt);
return a.exec();
}
我收到了什么:
这怎么可能?
更新 1: 我想在 BOM according to the Stackoverflow author's statement: 中使用 UTF-8
...在不知道是什么的情况下拥有一个字符串是没有意义的 它使用的编码 ���
更新 2: 在这种特殊情况下,很可能是编译器中的错误。
【问题讨论】:
-
顺便说一句,请确保您将应用程序编译为 unicode 和/或您的操作系统配置为使用俄语作为非 unicode 程序的默认语言。
-
我使用 VS2012,Qt 5.6,代码保存为“UTF-8 without BOM”,我可以在 QMessageBoxes 中显示来自代码的德语变音符号:
QMessageBox::information(this, tr("Süß!"), tr("{ÄÊì&78╬aúeKã´YﭛᵴҺϸ̚Ƚ"));- 开箱即用。 -
@MartinHennings 是的,但我在谈论 UTF-8 WITH Bom
-
应该没什么区别。 Qt5 将所有字符串文字解释为 UTF-8(除非明确告知不要这样做),并且我相信 VisualStudio 会对其进行编码,而不管 BOM 是什么。真正的原因一定在别处。
-
@MartinHennings,我一直在工作
WITHOUT BOM,从来没有出现过问题。但今天我决定试试WITH:)
标签: c++ visual-studio qt utf-8 string-literals