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. 是这吗?如果不是,再哪设置,我设置这个没发现它有什么作用
没有人知道吗?
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::fromUtf8
和QString::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 编码问题的主要内容,如果未能解决你的问题,请参考以下文章