我正在尝试在 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")
关于C++:Qt 5.3 无法显示 UTF-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753556/