简单的做法是,在运行程序开始的时候:
QTextCodec *codec=QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocate(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
我在用qt4和qt5的时候,在中文乱码上面有个不一样的地方:
qt4时:
QTextCodec *codec=QTextCodec::codecForName("GBK");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCString(codec);
qt5时:
QTextCodec *codec=QTextCodec::codecForName("GBK");
QTextCodec::setCodecForTr(codec);
在QT5中,有两个被放弃不用了,仅仅留了一个。
另外,对于QT5来说,对付中文乱码有几个方法:
第一种方法:
QString::fromLocal8Bit("你好");
第二种方法:
QStringLiteral("你好");
第三种方法:
QString::fromUtf8("你好");