一、原因
归结一句话来说明就是:源码字符集 和 执行字符集编码不统一!即IDE中编辑的代码编码 和 生成的运行程序编码 不统一,必然会出现乱码现象。QtCreator + MSVC编译器很容易出现乱码问题,原因就是QtCreator源码字符集默认UTF8的,MSVC执行字符集默认GBK的,不统一乱码自然出现。
二、方法
IDE中指定源码字符集
在main.cpp中插入
#include <QTextCodec>
int main(int argc, char **argv)
{
......
// 以下部分解决中文乱码
//TextCodec *codec = QTextCodec::codecForName("System"); //获取系统编码
QTextCodec *codec = QTextCodec::codecForName("utf8"); //Linux
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
// 以上部分解决中文乱码
......
}
如果上述方法仍不能解决那就在乱码的头文件中加上
#pragma execution_character_set(“utf-8”)
如果还不能解决还有一个终极办法
把乱码的cpp文件里面的代码复制到txt文件中,因为txt文件的格式是UTf-8,然后把txt中保存一下之后复制回cpp文件中
Qt点编辑然后select encoding
然后选择
以上即为所有解决办法,这是我在遇到乱码之后的找到的,进宫参考,欢迎讨论