#include <QtGui/QLabel>
#include<QTextCodec>
#include<QDebug>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gbk"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gbk"));
qDebug() << QObject::tr("中文");
QLabel *label = new QLabel(QObject::tr("你好"));
label->show();
return app.exec();
}
在tools下的options设置源码的默认编码为gbk。
qdebug显示乱码,label正常,
为什么啊?
4 个解决方案
#1
你的系统期待qDebug() 使用什么编码,为什么要改locale的编码??
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gbk"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gbk"));
#2
用QString::fromLocal8Bit(" 你的字符串");
#3
CodecForName(“UTF-8”)
#4
1楼正解!
#1
你的系统期待qDebug() 使用什么编码,为什么要改locale的编码??
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gbk"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gbk"));
#2
用QString::fromLocal8Bit(" 你的字符串");
#3
CodecForName(“UTF-8”)
#4
1楼正解!