QString显示中文乱码的原因:
Qt5中QString内部采用unicode字符集,utf-16编码。构造函数QString::QString(const char *str)默认使用fromUtf8()将str所指的执行字符集从utf-8转码成utf-16。
由上面fromUtf8()可知,QString需要执行字符集编码为utf-8,然后以utf-8进行解码,再编码为utf-16才能获得正确的字符编码。显示中文乱码的原因其实就QString转码方式与执行字符集不一致。(比如,源字符集为本地字符集GBK编码,QString以utf-8的方式进行解码,会导致获得错误的二进制编码,再将错误二进制转为utf-16就会出现乱码。)
解决方法:
使用预处理命令,将执行字符集设置为utf-8,在出现乱码的代码文件上方添加吐下预处理命令:
#pragma execution_character_set(“utf-8”)
这样就能解决qt界面或者因为使用QString读写数据而出现乱码的情况。