關於QT中文亂碼

2021-08-22 04:53:52 字數 1275 閱讀 7523

qtextcodec::setcodecfortr(...)

qtextcodec::setcodecforcstrings(...)

qtextcodec::setcodecforlocale(...)

儘管之前零零散散寫過一點這方面的內容,比如

但是,敢死隊員還是一批一批的 … 讓人少多有些無奈

在國內,之所以用很多人用這3行**,是因為他們在源**的const char*這種窄字串中使用了中文。

然後,發現。不對啊,咋全是亂碼呢?於是上網搜尋,發現其他人用的這3行**

於是,加上試試。發現:在自己的當前環境下(固定系統、固定地區語言設定、固定編譯環境)還真的沒有亂碼了。

於是乎?完全不考慮那3行**的作用了,反正自己能用就行了,管它什麼***呢!!

在qt5中,這個問題終於不復存在了,因為

這兩個函式

qtextcodec::setcodecfortr(...)

qtextcodec::setcodecforcstrings(...)

被直接去掉了。

這樣一來,受影響的直接是如下**了:

qstring s1 = "我是中文";

qstring s2("我是中文");

qstring s3 = qobject::tr("我是中文")

現在qt5中儘管去掉了setcodec***這兩個函式,但是預設編碼還是latin1。如果你要想使用

"我是中文"

這樣的字串,必須自己使用qtextcodec或這qstring::from*** 這種東西進行轉換

qt5發布之時,預設將會是utf8編碼,完全可以將你從qt編碼問題解放出來。

下面的**

qstring s1 = "我是中文";

qstring s2("我是中文");

qstring s3 = qobject::tr("我是中文")

將不會工作。

如果你在windows下,且使用的是mingw,那麼只要你將原始碼檔案儲存成utf8,前面的**將直接可以工作(無須其他設定)

如果你在其他平台了,那麼應該都預設是utf8檔案。同樣無須進行設定。

如果你的編譯器支援c++11,那麼,你可以直接使用

qstring s = u8"我是中文";

主流編譯器還都不怎麼支援c++11

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