例如,程式執行時,該qstring陣列中的中文會出現亂碼。
因為qt creator儲存的檔案使用的是utf-8編碼(是任何平台、任何語言都可以使用的跨平台的字符集),msvc編譯器雖然可以正常編譯帶bom的utf-8編碼的原始檔,但是生成的可執行檔案的編碼是 windows 本地字符集,比如 gbk2312。而qt 自帶的mingw一般不會出現亂碼問題。
也就是在可執行檔案中,字串「年齡」是以gbk2312編碼的,而可執行程式執行到這條語句時,對這個字串卻是以utf-8解碼的,這樣就會出現亂碼。
1、qstringliteral()巨集或者qstring::fromlocal8bit()封裝字串
程式中需要使用qstringliteral()巨集對每個中文字串進行封裝,但不能再使用tr()函式用於翻譯了。
缺陷:需要對每個含有中文的字串進行封裝,而且tr()函式無法使用(無國際化翻譯需求可忽略)。
2、強制 msvc 編譯器生成的可執行檔案使用utf-8編碼
需要在每個使用到中文字串的標頭檔案和源程式檔案的前部加入如下的語句
#if _msc_ver >= 1600 //vs2015以後的使用如下方案vs2015>vs>vs2010, msvc ver= 10.0 -14.0
#pragma execution_character_set("utf-8")
#endif
在pro檔案中新增
win32:msvc
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 ...