Qt 5 编码问题

Posted

技术标签:

【中文标题】Qt 5 编码问题【英文标题】:Qt 5 encoding problems 【发布时间】:2013-10-24 23:56:42 【问题描述】:

我有一个使用 Qt 4 构建的应用程序。它使用 latin-1 作为源代码,我总是使用 QString::fromLatin1。但是,当尝试移植到 Qt 5 时(实际上,我同时使用了 Qt 5 和 Windows 8,但我不认为这是 Windows 的错)编码实际上看起来有点正确,在文本之前/之后有一些奇怪的空间。

这是使用 Qt 5 / Windows 8 运行的应用程序:

如您所见,çã 看起来是正确的,但在它们之间添加了一些奇怪的空格。此外,ó 字符看起来是正确的,没有空格。

这就是我设置 QLabel 的方式:

m_msgWelcome->setText(QString("Bem vindo ao biocódigo!\nSelecione uma opção ao lado para iniciar"));

我已经尝试了QString::fromUtf8QString::fromLatin1 都没有成功。

【问题讨论】:

这很奇怪,在真正的编码问题中,我也希望出现错误的字符。您的源文件具有哪种编码?您能否将字符串缩减为“opção”并添加 m_msgWelcome->text().toUtf8().toHex() 的输出?也可能是该特定字体的字体渲染问题。 我得到“6f70c3a7c3a36f”toUtf8().toHex()。更改字体纠正了问题,现在我不知道为什么会发生这种情况,因为我使用的是以前工作的相同字体。想将此作为答案发布吗? 【参考方案1】:

使用 Qt5,通常情况下,您只需将所有文件保存为 UTF-8(无需使用 QString::fromAnythingEncoding 之类的方法)。

使用 Qt Creator,您可以这样做:Edit 然后Select Encoding(适用于所有文件)。

以后,您还可以更改默认设置:工具 > 选项 > 文本编辑器 > 行为 > 默认编码然后输入UTF-8

如果间距问题仍然存在,请尝试使用不同的字体。

【讨论】:

这确实是字体的渲染问题,尽管我仍然不知道为什么。但是非常感谢编码提示,我真的很难将文件转换为 UTF-8 而又不丢失我的重音代码。 我的源文件是 UTF8,但 Qt Creator 编辑器不显示重音字符。你有想法吗?这是编辑器的问题,与编译无关。

以上是关于Qt 5 编码问题的主要内容,如果未能解决你的问题,请参考以下文章

qt 编码的问题

QT unicode编码问题

VS2013 Qt5 Mysql中文编码问题

qt中编码格式问题

翻译 | QML编码约定

Qt界面显示乱码问题