关于Linux下 QT程序中文乱码的有关问题
求助 关于Linux下 QT程序中文乱码的问题
首先我是在WIN XP下用QT creater编写的程序,然后在虚拟机Ubuntu 12.04下编译运行。控制终端用的是Xshell。
以下是部分代码
通过读取本地文件获取到信息,解析过程中将char转化成QString并通过信号与槽传递给另一个类
在另一个类中:将text内容通过bu显示出来,bu为一个toolbutton
最后显示如下:
虚拟机开启终端中直接运行:
通过Xshell运行:
终端部分打印信息:
做了各种编码相关的尝试,始终不能显示正确的中文···
求大侠们帮忙看看到底是什么原因,以及解决办法,谢谢!
------解决方案--------------------
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
------解决方案--------------------
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
这两行改为:
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
------解决方案--------------------
你试下这个,Qt creator的源代码编码是utf-8的, QString text = QString::fromUtf8("中文");直接告诉你要赋值的QString你这个字符串是怎么编码的。
首先我是在WIN XP下用QT creater编写的程序,然后在虚拟机Ubuntu 12.04下编译运行。控制终端用的是Xshell。
以下是部分代码
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
// QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gb18030"));
// QTextCodec::setCodecForLocale(QTextCodec::codecForName("gb18030"));
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
else if(strcmp(buf[0], "TEXT") == 0)
{
//sndm.text = QString(QLatin1String(buf[1]));
sndm.text = QString(buf[1]);
//sndm.text = QString::fromAscii(buf[1]);
qDebug()<<"sndm.text="<<sndm.text;
}
通过读取本地文件获取到信息,解析过程中将char转化成QString并通过信号与槽传递给另一个类
在另一个类中:将text内容通过bu显示出来,bu为一个toolbutton
if( !(m.text.isEmpty()) )
{
qDebug()<<"`````text="<<m.text;
bu->setText(m.text);
}
最后显示如下:
虚拟机开启终端中直接运行:
通过Xshell运行:
终端部分打印信息:
做了各种编码相关的尝试,始终不能显示正确的中文···
求大侠们帮忙看看到底是什么原因,以及解决办法,谢谢!
------解决方案--------------------
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
------解决方案--------------------
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
这两行改为:
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
------解决方案--------------------
你试下这个,Qt creator的源代码编码是utf-8的, QString text = QString::fromUtf8("中文");直接告诉你要赋值的QString你这个字符串是怎么编码的。