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