qt 编码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt 编码问题相关的知识,希望对你有一定的参考价值。

windows默认的编码是GBK,linux默认的编码是UTF8
我在windows环境下使用Qt编程的时候,只有使用GBK才不会乱码,请问我怎么设置才能在windows下使用utf运行处汉字。
我用GBK的代码如下:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
qDebug()<<"不怕神一样的对手,就怕猪一样的队友";
我想吧GBK换成UTF-8,换了就会乱码

设置Qt的编码是在这吗?我说的是Qt Creator
Tools->Options->Environment->General->Default file encoding. 是这吗?如果不是,再哪设置,我设置这个没发现它有什么作用
没有人知道吗?

windows下默认是GBK的编码格式,如果想使用UTF8就要先修改Qt Creator的编码格式,方法如下
Tools->Options->Environment->General->Default file encoding
修改好UTF8格式之后,再创建工程,就可以显示UTF8格式的汉字了

代码如下:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));
qDebug()<<"不怕神一样的对手,就怕猪一样的队友";

或者使用这样输出

QTextCodec* codec = QTextCodec::codecForName("UTF8")
QString str = codec->toUnicode("不怕神一样的对手,就怕猪一样的队友");
qDebug()<<str;
参考技术A 你在windows下文件格式保存为utf-8,这样就没有问题了。
因为在默认情况下,linux下的utf8文本是没有包含utf8文件头信息的,所以会导致windows下处理有不兼容

Qt 5 编码问题

【中文标题】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 编码问题的主要内容,如果未能解决你的问题,请参考以下文章

QT unicode编码问题

Qt 5 编码问题

VS2013 Qt5 Mysql中文编码问题

qt中编码格式问题

Qt界面显示乱码问题

将 Qt 默认编码设置为 UTF-8