一、概述
因為工作到需要,需要使用QT進行開發。在學習QT到過程中,進行中文處理遇到了困難,輸出的文字全是亂碼。為此到處查資料,總算找到了解決到辦法。於是把找到的方法寫出來,一是與大家分享,二是作個備忘。
二、QT中的中文(國際化)
在QT中,QString使用Unicode的方式來存放字串。那麼在將相應到本地化字串傳遞給QString時,一定要用相應到編碼器進行編碼,才能得到正確的本地化字串。
方法:
這裡介紹中文的轉換方法。
在main()中,設定QApplication的到預設編碼方式。
如:
QApplication app(argc,argv);
app.setDefaultCodec(QTextCodec::codecForName("GBK"));
或則
QTextCodec::setCodecForLocale( QTextCodec::codecForName("GBK"));
然後設定tr的編碼方式.
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
具體的使用:
const char* pcszStr = "中文化";
QString s = trUtf8(pcszStr); //1
QString s = QString::fromLocal8Bit(pcszStr); //2
上面的1和2,有時1能正常顯示,有時2能正常顯示。至於為什麼會這樣,因為我也是初學QT,所以也正在研究答案。等找到答案以後在貼出來。
一、概述
因為工作到需要,需要使用QT進行開發。在學習QT到過程中,進行中文處理遇到了困難,輸出的文字全是亂碼。為此到處查資料,總算找到了解決到辦法。於是把找到的方法寫出來,一是與大家分享,二是作個備忘。
二、QT中的中文(國際化)
在QT中,QString使用Unicode的方式來存放字串。那麼在將相應到本地化字串傳遞給QString時,一定要用相應到編碼器進行編碼,才能得到正確的本地化字串。
方法:
這裡介紹中文的轉換方法。
在main()中,設定QApplication的到預設編碼方式。
如:
QApplication app(argc,argv);
app.setDefaultCodec(QTextCodec::codecForName("GBK"));
或則
QTextCodec::setCodecForLocale( QTextCodec::codecForName("GBK"));
然後設定tr的編碼方式.
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
具體的使用:
const char* pcszStr = "中文化";
QString s = trUtf8(pcszStr); //1
或則
QString s = QString::fromLocal8Bit(pcszStr); //2
上面的1和2,有時1能正常顯示,有時2能正常顯示。至於為什麼會這樣,因為我也是初學QT,所以也正在研究答案。等找到答案以後在貼出來。