August 29, 2011

shen yang shen yang
Lab Rat
7 posts

求教控制台输出的Qt中文乱码怎么解决

 

求教Qt中文乱码怎么解决,
代码
qDebug()<<“我要显示中文”;
输出
[Qt Message] ?????

程序显示的乱码可以 QTextCodec *codec = QTextCodec::codecForName(“gb18030”); QString qstr = codec->toUnicode(“大大 不是吧”); textBrowser->setText(qstr);
但控制台为什么总是乱码

2 replies

August 29, 2011

1+1=10 1+1=10
Hobby Entomologist
643 posts

1. 建议你先看看 http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html

2. 你调用的是

  1. QDebug & QDebug::operator<< ( const char * s )

这个函数,你最后先转成QString,然后去调用:
  1. QDebug & QDebug::operator<< ( const QString & s )

不然,它如何猜到你想用何种编码来进行转换呢?? (默认latin1)

August 31, 2011

shen yang shen yang
Lab Rat
7 posts

的确应该是这样,但@QDebug & QDebug::operator<< ( const QString & s )@
我也有实验过,怀疑控制台是不是只接受latin1格式

  1.     QTextCodec *codec = QTextCodec::codecForName("gb18030");
  2.     QString qstr = codec->toUnicode("大大 不是吧");
  3.     qDebug()<<qstr;

输出
  1. [Qt Message] "´ó´ó ²»ÊÇ°É"

1+1=2 wrote:
1. 建议你先看看 http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html

2. 你调用的是

  1. QDebug & QDebug::operator<< ( const char * s )

这个函数,你最后先转成QString,然后去调用:
  1. QDebug & QDebug::operator<< ( const QString & s )

不然,它如何猜到你想用何种编码来进行转换呢?? (默认latin1)

 
  ‹‹ [已解决]怎么去除窗体切换时窗体闪烁      求教QTextStream seek 截取大段文字时,文字开头出现乱码 ››

You must log in to post a reply. Not a member yet? Register here!