Qt 字元編碼 亂碼總結

2021-07-03 18:55:25 字數 828 閱讀 8077

[cpp]view plain

copy

qtextcodec::setcodecforcstrings(qtextcodec::codecforname(

"utf-8"

));  

qtextcodec::setcodecforlocale(qtextcodec::codecforname("utf-8"

));  

qtextcodec::setcodecfortr(qtextcodec::codecforname("utf-8"

));  

網上很多人一碰到編碼問題就無腦的copy上面3行……

從qt5開始只剩下setcodecforlocale這乙個了,只是影響qt對tolocal8bit相關函式的編碼方式

[cpp]view plain

copy

在qt中,qstring會用utf-16編碼儲存,而qdebug()等i/o函式會以utf-8編碼處理。

其實轉換後的位元組流是正確的,只是顯示時用了和位元組流不同的編碼方式處理導致亂碼

所以當要在qt中輸入輸出非utf-8字串時應該先轉換一下

在原始碼中要寫入非英文本元的話建議使用轉義的方式,也就是上面「\xe4\xbd...」這種,這也是官方推薦的方式

為了方便將字串轉換為utf8轉義字元,寫了乙個小工具

2014-5-6補充:

從vs2010sp1和vs2013開始就已經支援utf-8的原始碼檔案了,只用在工程裡加入一句"#pragma execution_character_set("utf-8")"即可。不用再做上面的轉義了。

字元編碼亂碼處理

python3預設編碼是unicode 而python2是ascii碼。windows環境預設是gbk編碼。1.python直譯器的預設編碼 2.python原始檔檔案編碼 3.terminal使用的編碼 4.作業系統的語言設定 一 編碼的種類 i ascii 佔1個位元組,只支援英文 ii gb2...

QT中文亂碼總結

在寫乙個非常簡單的qt源程式時遇到了中文亂碼問題,所以上網搜尋得到了還算比較滿意的答案。from wowcode的主體部分基本已經完成了,對於我自己來說,其實已經足以應付我的需要了,不過如果發布的話,實在還是拿不出手,因為很多地方還需要完善,一些對我自己來說多餘的功能也沒有完成,今天嘗試將程式移植到...

Qt編碼問題總結

qt5.7.1 ide,qt create 4.1 a argc,argv qstring strmessage1 qstring fromlocal8bit 我是utf8編碼的檔案 qstring strmessage2 qstringliteral 我是utf8編碼的檔案 qstring str...