qt中 中文亂碼問題

2022-02-19 09:03:04 字數 1645 閱讀 7706

qt是跨平台的開發平台。他的編譯器是要手動配置的,在window下一般我們用virtual stuido中cl,或者mingw中的g++

在linux中一般採用linux下的g++

而  微軟vs的中的cl,mingw中的g++,linux下的g++),源**分別採用gbk不帶bom的utf-8以及帶bom的utf-8這3中編碼進行儲存。

也就是說編譯器的編碼方式是不同的,所以大部分情況我們在qt**中寫中文時就會有亂碼

網上搜尋得出

這兩段**可以解決大部分的亂碼問題。(記得加入#include

標頭檔案引用

qtextcodec::setcodecforcstrings(qtextcodec::codecforname("gbk"));

qtextcodec::setcodecforcstrings(qtextcodec::codecforname("utf-8"));

其實上面的**的意思是告訴編譯器我們用什麼樣的編碼方式來解讀我們寫的**。 一般在使用微軟的編譯器 我們在main函式中

使用g++編譯器我們使用qtextcodec::setcodecforcstrings(qtextcodec::codecforname("utf-8"));

第2種方法

qtextcodec * bianma = qtextcodec::codecforname ( "gbk" );
qmessagebox::information(this, "提示", bianma->tounicode("中文顯示!"));

其實也可以通過qstring定義的靜態函式,先轉換成unicode型別:

qstring::fromlocal8bit("提示")

不過在qt5中,提供了乙個專門的處理巨集,來支援中文常量,那就是qstringliteral,但它只能處理常量。

qmessagebox::information(this, qstring::fromlocal8bit("提示"), qstringliteral("中文顯示"));

const

char* info = "中文顯示";

//不支援
qstring strinfo = qstringliteral(info);
//支援
qstring strinfo = qstring::fromlocal8bit(info);
對於中文常量,使用qstringliteral即可解決,對於字串變數,使用qstring自帶函式也可以輕鬆解決。

qt 中文亂碼 Qt中文亂碼問題

接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...

亂碼問題 Qt中文亂碼問題

接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...

QT 中文亂碼問題

1,將設定改為 如果是utf 8編碼,則新增 2,cpp檔案開始新增 pragma execution character set utf 8 根據 qt 的文件 中規定 qstring 的 const char 建構函式是呼叫 fromutf8 構造的。所以要求字串字面量是 utf 8 編碼的位元...