qt對國際化有很好的支持。但默認的是unicode編碼。中文系統下默認的并非unicode,
而是比如gbk或gb2312。所以在進行const char*參數傳遞和顯示時必須特別注意。
比如在默認情況下
QMessageBox::information(this, "Test", "這是一個測試");
中文字符無法正確顯式
又如
bool connect(const char * connectString);
你如果輸入
QString str("一個測試");
connect((const char*)str);
默認是調用QString.latin1()方法,是直接從Unicode的QString返回latin-1字符表示
集。在中文系統下有時不是你想要的。
解決方案:在main.cpp里增加
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
這時涉及到QString/QCString到const char*的轉換將使用本地的編碼集。
類似的還有setCodecForTr()方法。
NOTE: 這跟qt使用unicode進行內部通訊、顯示并不沖突。當顯示一個const char*時,
qt會將const char*再行轉成unicode。
另一種麻煩點的方法:
在寫QT程序的時候,怎樣使用中文?QT內建了國際化支持,可以使用國際化支持來實現。但,比較復煩瑣,那怎么簡單地使用中文呢?
QT 的QString內部是使用Unicode編碼的,在寫源碼的時候,可以使用本地的GB2312/GBK/GB18030,或者UTF8編碼。如果是使用前者的話,那可以使用QString::fromLocal8Bit("本地中文字符串")來得到想要的結果。如果是使用后者的話,可以使用 QString::fromUtf8("UTF8編碼格式的中文字符串")來得到想要的結果。
posted on 2005-11-23 17:54
halCode 閱讀(5276)
評論(0) 編輯 收藏 引用 所屬分類:
Qt編程