qt4编程——关于中文乱码
2009-04-22 14:33
网上N种说法,统统不行,很多根本不是qt4里面的方法,在此也请那些喜欢复制粘帖的朋友本着对他人负责的精神,自己拿不准没测试过别不负责任地胡乱粘贴,那样会给很多人带来不方便。
最后我还是自己查qt助手得出的解决方案,如下: 首先,声明一个const char *类型的数据,然后将此数据用 QString fromLocal8Bit ( const char * str, int size = -1 )方法将该const char *类型转换成QString类型。请注意,中间参数为const char *类型,这里千万类型要准确。而fromLocal8Bit方法里面有两个参数,经过测试一个参数也可工作,size会默认成为-1,即该const char *串的长度。你可以分段进行操作,然后通过append()方法追加到一个QString内(这样做的目的是有时候是const char * + QString + const char *的情况,如果你用一段中文然后中间再加上变量数据就很容易遇到这种情况)。之后,你便可以对该QString任意操作了,而且不会乱码。 示例: if(code == 200){ ui->stackedWidget->setCurrentIndex(8); }else{ const char *str = errordetect(code); message.append(QString::fromLocal8Bit(str)); ui->label_31->setText(message); message.clear(); ui->stackedWidget->setCurrentIndex(9); } 已经调试通过,用这种方式从后台输出到label中的中文文本不会乱码。 |
|
来自: 张岩峰 > 《C plus plus》