qt4編程——關于中文亂碼
2009-04-22 14:33
網(wǎng)上N種說法,,統(tǒng)統(tǒng)不行,很多根本不是qt4里面的方法,,在此也請那些喜歡復制粘帖的朋友本著對他人負責的精神,,自己拿不準沒測試過別不負責任地胡亂粘貼,那樣會給很多人帶來不方便,。
最后我還是自己查qt助手得出的解決方案,,如下: 首先,聲明一個const char *類型的數(shù)據(jù),,然后將此數(shù)據(jù)用 QString fromLocal8Bit ( const char * str, int size = -1 )方法將該const char *類型轉(zhuǎn)換成QString類型,。請注意,中間參數(shù)為const char *類型,,這里千萬類型要準確,。而fromLocal8Bit方法里面有兩個參數(shù),經(jīng)過測試一個參數(shù)也可工作,,size會默認成為-1,,即該const char *串的長度。你可以分段進行操作,,然后通過append()方法追加到一個QString內(nèi)(這樣做的目的是有時候是const char * + QString + const char *的情況,,如果你用一段中文然后中間再加上變量數(shù)據(jù)就很容易遇到這種情況)。之后,,你便可以對該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); } 已經(jīng)調(diào)試通過,,用這種方式從后臺輸出到label中的中文文本不會亂碼,。 |
|
來自: 張巖峰 > 《C plus plus》