06-解决中文乱码的问题
7.1.4 解决中文乱码的问题
在使用QTextStream读写有中文内容的文本文件时,为了能正确识别Unicode码,需要调用setAutoDetectUnicode(true),设置QTextStream可以自动识别Unicode码,如果不做此设置,读取文件的中文将是乱码,无法正常显示。
为解决Unicode的识别问题,可以在应用程序中做全局的设置,使得应用程序支持Unicode。方法是在main()函数中使用QTextCodec类进行编码设置。例如,本实例的main()函数如下:
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();
}
使用UTF-8的编码解码器在main()函数的前面增加了两行,并设置为应用程序使用的编码解码器,这样在应用程序内就有了对Unicode码的支持。在前面的openTextByStream()函数中,即使不用setAutoDetectUnicode(true)也可以正常显示汉字了。