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

标签 c++ qt unicode utf-8

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

_rotateLeftButton->setText("\u20AC");

_rotateLeftButton->setText("€");

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

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

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

Character can not be displayed

除了 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/

相关文章:

Python:从字符串中删除特定字符 (u"\u2610")

c++ - C++ memory_order_acquire/release问题

c++ - 尽管数据匹配预期值,但 compare_exchange_strong 失败

c++ - 使用 vsprintf 和文件操作

c++ - Qt5+ 中的可拆卸选项卡

Python 将字符串保存到文件中。统一码错误

c++ - 改进我的共享 secret 算法/方法并建议加密协议(protocol)

c++ - C++对象属性的QML属性

c++ - Qt中的连续警告声?

C++ 项目类型 : unicode vs multi-byte; pros and cons