QT中文亂碼總結

2021-06-04 13:30:25 字數 1824 閱讀 3824

在寫乙個非常簡單的qt源程式時遇到了中文亂碼問題,所以上網搜尋得到了還算比較滿意的答案。

from:

wowcode的主體部分基本已經完成了,對於我自己來說,其實已經足以應付我的需要了,不過如果發布的話,實在還是拿不出手,因為很多地方還需要完善,一些對我自己來說多餘的功能也沒有完成,今天嘗試將程式移植到了另一台機子上,卻出現了中文亂碼問題,記錄之。

也許你在用這個方法實現中文化,但它確實不夠嚴謹

laguage» c++title» 出現頻率最高的辦法

#include

intmain(int argc, char *argv) 

很多地方都會告訴你,這樣可以實現qt支援中文,包括我看的教程書上也是,他甚至告訴我要支援中文必須加入這段**,但我想告訴你,這個辦法是有問題的,而且這個問題還不小!我在兩台同樣是xp系統的機子上移植就出現了中文亂碼問題,而且所有中文都是用了tr()的。所以請別迷信那些教程,實踐才是真理!

你可以嘗試這個方法

laguage» c++title»

#include

intmain(int argc, char *argv) 

雖然這個方法看似更為嚴謹,你可以嘗試,不過這麼寫還是會有問題,至少沒有解決我的問題。這也是我網上看到的出現頻率也挺高的方法,不過我想說的是:其實這個辦法治標不治本,因為它後面只是對拓寬對中文支援的範圍,而一般我們都建議把中文寫在tr(「」)裡。

推薦個比較保險的辦法

laguage» c++title» 我推薦的方法

intmain(int argc, char *argv) 

這裡獲取了系統字型編碼,解決了我的問題,個人也覺得這個辦法應該是個不錯的解決方案。

也可能是字型選擇不當造成的亂碼

如果你始終解決不了亂碼問題,可以嘗試設定下字型,但其實是否是字型造成的亂碼的方法很簡單,如果出現的是乙個個方塊,便是字型設定不當,否則,優先考慮編碼設定。

下面看看我自己的總結吧,首先是源程式(目錄:a, 源**:a.cpp)

// a.cpp

**中的關鍵是:

qtextcodec::codecforname("gbk");

1. 通過這種方式來設定編碼格式,要保證源程式檔案的編碼格式就是gbk(即ansi格式(linux上顯示為iso-8859格式)),如果你把源程式檔案編碼方式改為utf8,那麼編譯後就會出現亂碼了。

2. 如果你的源程式檔案編碼是utf8,那就要將上面的gbk改為utf8。這樣才能保證不出現亂碼。

在保證了上面兩個條件後,將a.cpp拿到windows上或linux上編譯後得到的程式都不會出現亂碼現象。

example2,將上面的源程式改為:

// a.cpp

1.  qtextcodec::codecforname("system"); // 取系統的編碼,在windows上會得到中文編碼,在linux上預設是utf8,與系統設定有關。

2.  對於這樣的**,在windows上要將源程式檔案編碼改為ansi格式,在linux上要改為utf8格式,否則就會出現亂碼。不信可以試試。

對於以上兩個例子,要說明的就是這些。

最後,再來乙個結論:我發現qt編譯後的可執行程式可以適應當前不同的編碼格式。即編譯好之後,不管你當前是以gbk或utf8格式檢視,都不會出現亂碼。這是qt程式與普通的c/c++程式的區別。

qt 中文亂碼 Qt中文亂碼問題

接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...

Qt中文亂碼

laguage c title 出現頻率最高的辦法 include intmain int argc,char argv 很多地方都會告訴你,這樣可以實現qt支援中文,包括我看的教程書上也是,他甚至告訴我要支援中文必須加入這段 但我想告訴你,這個辦法是有問題的,而且這個問題還不小!我在兩台同樣是xp...

QT中文亂碼

兩邊都是win7系統,不知道為什麼在我的機器上就可以正常顯示,而把exe檔案加上必要的dll一起移到另一台win7系統電腦上時,button,label什麼的都顯示亂碼了,而且qtextedit裡面的卻能夠正常顯示。請問下這是因為什麼問題呢?通過設定以下 也沒能解決問題 c c code 1234 ...