码迷,mamicode.com
首页 > 其他好文 > 详细

Qt界面显示乱码问题

时间:2020-07-01 17:32:15      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:程序   说明文   iso   utf8   ola   代码   组合   原因   oca   

Qt界面显示及内部函数都是用QString作为参数进行的。一般出现乱码原因都是QString没有按照正确的编码格式显示文本,导致出现乱码。QString内部采用Unicode编码,可以显示任何文本,但是QString在显示某个文本前必须知道此文本是什么编码,QString才能把此文本的编码格式转换成Unicode编码进行正确显示。就和发电报的摩斯电码一样,收报人员必须知道你是按那个密码本编的报文,他才能把报文转换成英文,再从英文翻译为中文显示(这里这样说不准确,摩斯密码可以直接翻译成中文)。

一般做国际版推荐统一UTF-8编码,包括源文件编码格式及内部字符串编码格式

下面是QString几个常用的转换函数及说明文本本身编码格式的函数,通过下面这些函数及其类似函数的组合,可以正确的显示所以文本

QString:: fromAscii():说明文本是Ascii编码

QString:: toAscii():QString无此成员

QString:: fromLatin1(): 说明文本编码格式为Latin-1(ISO-8859-1)

QString:: toLatin1():返回Latin-1编码的文本

QString:: fromUtf8():说明此文本是utf-8编码

QString:: toUtf8():返回utf-8编码的文本

QString:: fromLocal8Bit():说明此文本是操作系统默认字符编码,中文系统默认(gb18030)

QString:: toLocal8Bit():返回操作系统默认字符集编码的字符串

       可能有人觉得用上面哪些函数转来转去太麻烦了,那么可以使用下面的函数,设置CString的编码格式,或者说是告诉QString,程序中的文本默认都是这样编码的。

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

但是通过上面的编码函数到底要把编码格式设成GBK还是UTF-8还是其他的编码呢,一般来说就是源代码是GBK,就用GBK,源代码是UTF-8就用UTF-8。但有一个例外,如果你保存成了带BOM的UTF-8而且用的微软的cl编译器,此时仍是GBK

其实上面说了那么多,主要还是要保证显示的编码格式与文本本身的编码格式一致。

Qt界面显示乱码问题

标签:程序   说明文   iso   utf8   ola   代码   组合   原因   oca   

原文地址:https://www.cnblogs.com/softwareyy/p/13220253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!