在网上找了很长时间,大部分都是其他人瞎折腾转发的,很多都不行,实用性很低,现在写的这个总结也是在网上找了很久总结出来的,经本人在Qt4.5和Qt5.3上面测试确实可行
。
我们都是中国人,很多标题用的都是中文,所以直接在main函数中定义如下:
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
别忘记加上 #include <QTextCodec> 这个头文件
使用中文时不需加tr()函数。
解决读取ini文件中中文乱码
QSettings settings("xxxx.ini",QSettings::IniFormat);
settings.setIniCodec(QTextCodec::codecForName("GB2312")); //在此添加设置,即可读写ini文件中的中文
settings.beginGroup("company");
解决读取中文文件中文的乱码
QFile file("xxxx.txt");
QTextStream stream(file,QIODevice::ReadOnly);
stream.setCodeC( QTextCodec::codecForName("GB2312") );
stream.readAll();
如果进行上述设置,在自己机器上成功但是在别人的机子上还是出现乱码的问题该如何办呢?
很简单,因为别人的机器上缺少那个字符库文件,这个时候,你发布软件的时候将那个库带上去了就行了。
将C:\Qt\4.8.4\plugins\codecs 这个文件夹拷贝进你发布软件的exe文件下,这个文件夹与你那个exe文件位于同一目录就可以了。
注意:你编译的exe文件与你拷贝进的字符库是同一版本的Qt才行。