tony2278的专栏

海阔心无界

QT5 解决中文乱码问题


#include<QDebug>

qDebug()<<"hello";

boost::system::error_code ec;
std::string str = ec.message();  //str内容乱码
QString str2= QString::fromLocal8Bit(str.c_str()); //str2:"拒绝访问"
qDebug()<<str2;  //正常输出:"拒绝访问"

//


qt fromLocal8Bit()函数这个函数到底是个什么意思

使用fromLocal8Bit()函数,实现了从本地字符集GB到Unicode的转换,主要应用于处理汉语显示乱码等问题


//以下是引用,内容来自 Qt5乱码问题 

Qt5中出现的中文乱码的问题甚是复杂。最开始使用Qt4.8.1在Ubuntu上做Linux嵌入式软件开发,当时还没有遇到中文乱码的问题,后来转到Windows7上做WinCE嵌入式软件开发,同一个工程再次编译起来痛苦不堪,各种中文乱码,改编码为utf8、gb2312都无效。后来逐渐明白,我在Ubuntu下使用的是GCC构建套件,交叉编译工具是arm_linux_gcc,GCC构建套件默认是使用utf8编码的,所以编译出来的程序使用的utf8编码,中文当然不会出现乱码。而在Windows7上使用的是vs2012版本的Qt4.8.1,而vs系列的VC++编译套件貌似使用是GBK编码。
——之后,发现在Windows下vs系列QtCreator中编写的源码要使用“utf8 无BOM”类型,而.pro工程又必须使用“utf8”类型(两者编码类型真的有区别),如此源码中的中文(包括硬编码中的中文、注释的中文)才不会出现乱码。
——前不久又见识过从Qt add in VS(大概是这么称呼吧,就是在VS中使用Qt开发)转到QtCreator中,仍然使用VS VC++构建套件的项目。其中使用了一个预编译指令来开启VC++启用utf8编码:

#pragma once
#execution_character_set("utf8")

这种情况下,源码的编码就应该使用“utf8”而不是“uft8无BOM”或者“GBK”了。

总结下,IDE中的编辑器有编码字符集、源码有编码字符集、编译器有编码字符集、运行环境也有编码字符集,这几者间如果搭配有问题,跑起来的应用遇到Unicode字符就乱码了,咋们见到中文乱码居多。

阅读更多
文章标签: 乱码 qt5
个人分类: QT
想对作者说点什么? 我来说一句

QT - qt5 中的中文字符乱码

-

gdyht gdyht

2017-10-09 20:16:44

阅读数:216

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭