当前位置:嗨网首页>书籍在线阅读

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)也可以正常显示汉字了。