C++:Qt 5.3 无法显示 UTF-8 字符

C++: Qt 5.3 fails to display UTF-8 character

我试图在 Visual Studio 2013 中使用 Qt 和 C++ 在按钮上显示一个 unicode 字符(欧元符号)。我尝试了以下代码:

_rotateLeftButton->setText("\u20AC");

_rotateLeftButton->setText("€");

_rotateLeftButton->setText(QString::fromUtf8("\u20AC"));

_rotateLeftButton->setText(QString::fromUtf8("€"));

但是,所有这些行都会导致以下结果:

除了 moc 文件 (.cxx),我的所有代码文件都是 UTF-8 编码的。无论出于何种原因,moc 可执行文件都不会使用 unicode 生成它们。但是我无法正确显示此 unicode 符号。我还尝试设置另一种字体而不是默认字体但没有成功。有谁知道可能是什么问题?

感谢您的帮助。

QString::fromUtf8("€")

如果文件确实以 UTF-8 格式处理,则可以使用。作为@n.m。评论说,VS 需要一些来自人造 BOM 的帮助来确保这一点。

QString::fromUtf8("\u20AC")

\u 在字节字符串文字中没有意义。对于 UTF-8 编码版本,您可以使用 \x 字节转义来拼写它:

QString::fromUtf8("\xE2\x82\xAC")

或者使用宽字符串文字:

QString::fromWCharArray(L"\u20AC")