【发布时间】:2014-05-23 05:16:52
【问题描述】:
我正在尝试将包含平假名的文本从 wstring 转换为 QString,以便可以在标签的 text 属性上使用它。但是我的代码不起作用,我不确定为什么会这样。
下面的转换方法明显告诉我我做错了:
std::wstring myWString = L"Some Hiragana: あ い う え お";
ui->label->setText(QString::fromStdWString(myWString));
输出: 一些平假名:゠ㄠㆠ㈠ãŠ
如果我将它们直接放在字符串中,我可以在标签上打印平假名:
ui->label->setText("Some Hiragana: あ い う え お");
输出:一些平假名:あいうえお
这意味着我可以通过简单地使用 std::string 而不是 std::wstring 来避免这个问题,但我想知道为什么会这样。
【问题讨论】:
-
出现了一些奇怪的 UTF-8 Windows-1252 恶作剧,源文件的编码是什么,你使用的是什么编译器?
-
文件编码为UTF-8,编译器为Microsoft Visual C++ Compiler 12.0 (x86)。
-
你试过
QString::fromWCharArray( myWString.c_str());和myString.toUtf8()吗? -
@Laszlo Papp 我之前尝试过,但结果相同。我认为我的 Qt 不喜欢 UTF-8。 ^^
-
@user3582665:好的,你没有提到,所以只是仔细检查。 ;)