帖子里解决方案是
修改main.cpp,添加包含:
#include <QTextCodec>
主函数中创建QApplication后马上加:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForTr(codec);
"UTF-8"是汉字编码,也可能是"GBK"。
还乱码的话再加:
QTextCodec::setCodecForCStrings(codec);
我想知道为什么会出现乱码,windows下不管是vs还是creator不是默认GBK的么?有没有一劳永逸的方法,总不能让我每个程序里都来这么一段吧?
6 个解决方案
#1
使用系统字符编码格式:
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
windows下一般使用GBK,linux采用uft8
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
windows下一般使用GBK,linux采用uft8
#2
代码里不要有中文,将English字符串放到tr()里,程序完成后再去翻译成中文。
#3
可是我以前写程序的时候都没有问题,就是今天突然出现这种问题了,为什么?
#4
我知道,我想知道能不能有一劳永逸的方法
#5
翻译就是一劳永逸的办法,不光是中文没问题,其它国家的文字也没问题。
修改QTextCodec不是好办法,中国改GBK,法国,德国,加拿大最麻烦讲法语还有英语。
这么改下去没完。
而且代码里有中文,代码移植就会有问题,在windows里写的代码到linux里可能编译出错,反过来也一样。
#6
LZ的想法目前没有,用tr()翻译也不是一劳永逸的方法,还是等Qt5完全支持天然utf8再说吧
#1
使用系统字符编码格式:
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
windows下一般使用GBK,linux采用uft8
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
windows下一般使用GBK,linux采用uft8
#2
代码里不要有中文,将English字符串放到tr()里,程序完成后再去翻译成中文。
#3
可是我以前写程序的时候都没有问题,就是今天突然出现这种问题了,为什么?
#4
我知道,我想知道能不能有一劳永逸的方法
#5
翻译就是一劳永逸的办法,不光是中文没问题,其它国家的文字也没问题。
修改QTextCodec不是好办法,中国改GBK,法国,德国,加拿大最麻烦讲法语还有英语。
这么改下去没完。
而且代码里有中文,代码移植就会有问题,在windows里写的代码到linux里可能编译出错,反过来也一样。
#6
LZ的想法目前没有,用tr()翻译也不是一劳永逸的方法,还是等Qt5完全支持天然utf8再说吧