我在编写Qt程序的时候经常出现中文乱码的情况,我只遇到了三种情况,对这三种情况有不同的解决方式。
这种情况是Qt的编码不正确,没有使用UTF-8,但是我觉得大多数人都不是这种,现在Qt在安装之后似乎默认就是UFT-8,若是这种情况,可以参考以下解决方案对默认编码进行一个修改:
若是上面的方法还是不行,可能是使用了QTextStream读写了有中文内容的文本,但是它的编码却不是UTF-8,可以再试试以下方法,对其文本流指定编码:
在main函数中使用QTextCodec进行编码设置,在进行更改前源代码是这样:
int main(int argc,char *argv[]){
QApplication a(argc,argv);
MainWindow w;
w.show();
return a.exec();
}
在main函数中添加两行内容,用于指定文字流编码:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
更改完后变为:
int main(int argc,char *argv[]){
//更改编码
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
QApplication a(argc,argv);
MainWindow w;
w.show();
return a.exec();
}
这样应该就不会出错了。这种是最常见的情况,大多数人在进行修改后就能正常运行程序了
在编写Qt项目的时候没有使用QString,而是使用的string或者其他的类型储存文字。
这个比较简单,将对象类型进行一个修改即可。
这只是我遇到的三种,应该是还存在其他问题的,若是还遇到了别的情况可以将自己遇到的问题打在评论区或者私聊我,我看到了就会去试验,有了结果之后再对文章内容进行一个更新。