QT中文亂碼 QTextCodec

2021-10-22 13:47:50 字數 1642 閱讀 2199

qstring -> char*

qbytearray -> qstring

qt內部是使用「unicode」編碼的,qstring裡 儲存的都是「unicode」編碼

qstring

("你好"

) 當讀取到「你好」時

qt會預設呼叫qstring

::fromlatin

(const

char*)

latin是拉丁英文的意思,即把'英文的const char*' 轉為 qt的qstring,

這個要轉換成的qt的qstring是unicode

這肯定是亂碼的,因為我們的const

char

*是中文,不是latin

qstring

::fromlocal8bit

(const

char

*)是:

從本地編碼的字串,轉換成 qt的qstring

而本地編碼肯定是不亂碼的,所以這是可以解決亂碼情況的。

qstring str =

qstring

::fromlocal8bit

("你好");

' 解決,中文字元 儲存到 qstring裡面 的問題 '

text code converter  '文字編碼轉換器'

qtextcodec *codec =

qtextcodec

::codecforname

("gbk");

qtextcodec

::setcodecforlocale

(codec)

;表示: 修改本地編碼,即把所有的qstring

("你好");

把"你好"當成是gbk編碼 來轉換成 qt的qstring。

這是比較高階的用法:

直接: qstring str =

qstringliteral

("你好"

);

這是系統裡的巨集,將你的字元 轉成 unicode編碼

qstring str =

"你好"

;qbytearray b = str.

tolocal8bit()

;const

char

* c = b.

data()

;// 不要寫成: str.tolocal8bit().data();

此時,c的中文 會亂碼!!!

1,提前設定:

qtextcodec::setcodecforlocale(qtextcodec::codecforname("utf-8"));2,

std::string ss = s.tostdstring();

const char* c = ss.c_str();

同樣,不要寫成一行

qbytearray ba;

qstring

::fromlocal8bit

( ba.

data()

);

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 ...