qt預設的編碼(unicode)是不能顯示中文的,可能由於windows的預設編碼的問題,windows預設使用(gbk/gb2312/gb18030),所以需要來更改qt程式的編碼來解決中文顯示的問題。
qt中有專門的乙個類來處理編碼的問題(qtextcodec)。
可以以下的這些方法來設定編碼。
1. 設定qobject的成員函式tr()的編碼。
qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));
其中的codecforname函式是根據引數中的編碼名稱,在系統已經安裝的編碼方案中需找最佳的匹配編碼型別,該查詢是大小寫不敏感的。如果沒有找到,就返回0。
#include
#include
注意:技巧:
可以用codecforlocale函式來返回現在系統的預設編碼,這樣更容易做多編碼的程式而不用自己手動來更改具體的編碼。
2. 使用qstring的fromlocal8bit()函式
這個方法是最快的,系統直接自動將char *的引數轉換成為系統預設的編碼,然後返回乙個qstring。
int main(int argc,char *argv){
3. 用qtextcodec的tounicode方法來顯示中文
int main(int argc,char *argv){
ps:關於中文顯示亂碼的問題我糾結了好久,在網上查的一些方法似乎都不是太管用,所用我自己又實驗了很多次,終於解決了這個問題。我其他兩種方法我沒有試過,我只說第一種方法:
剛開始的時候我設定qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));或者將"gbk"換成"gb2312","gb18030"都沒有成功,依然是亂碼。不過也並不是一定不行,後來發現有些時候這樣設定也是可以的,我認為可能與源**的編碼方式有關。我後來又找到了一種解決辦法就是設定成qtextcodec::setcodecfortr(qtextcodec::codecforname("utf-8
"));或者設定成qtextcodec::setcodecfortr(qtextcodec::codecforlocale());我在ubuntu下,這兩種設定都可行;在windows下,qtextcodec::setcodecfortr(qtextcodec::codecforname("utf-8"));和qtextcodec::setcodecfortr(qtextcodec::codecforlocale());中應該有一種可以,希望我的這些研究能夠幫到你。
Qt顯示中文
以下說的只是自己的一些總結,不對了或不全面還望指正。qtextcodec setcodecfortr qtextcodec codecforname gb18030 qfont font times 10,qfont normal,false 就上面的3句話就ok了,而且是在qt4環境下 網上有個方...
Qt中文顯示
qt預設的編碼 unicode 是不能顯示中文的,可能由於windows的預設編碼的問題,windows預設使用 gbk gb2312 gb18030 所以需要來更改qt程式的編碼來解決中文顯示的問題。qt中有專門的乙個類來處理編碼的問題 qtextcodec 1.設定qobject的成員函式tr ...
Qt 中文顯示
qt預設的編碼 unicode 是不能顯示中文的,可能由於windows的預設編碼的問題,windows預設使用 gbk gb2312 gb18030 所以需要來更改qt程式的編碼來解決中文顯示的問題。qt中有專門的乙個類來處理編碼的問題 qtextcodec 可以以下的這些方法來設定編碼。1.設定...