QT messagebox 亂碼解決

2021-07-03 02:21:16 字數 2701 閱讀 6602

by yhluo

2023年5月20日

qtno comments

使用 qt 經常可能遇到中文亂碼的問題,這裡介紹一下 qt 中文視窗和路徑亂碼的解決方法。我的環境是 qt5.2 vs2012 windows8.1 64bit。

qt 中文亂碼原因

關於 qt 中文亂碼的原因以及在 qt4 中解決中文亂碼問題,推薦參考博文:qt中文亂碼問題

qt4 中 qtextcodec 的很多函式在 qt5 中都沒有了,因此適用與 qt4 的解決方法對 qt5 無效。具體可以檢視 qt 的官方文件:

qt4qt5

qt5 中文亂碼解決

下面分別介紹無 bom utf-8、有 bom utf-8 和 gbk 編碼下 qt 視窗、路徑以及 cout 輸出中文路徑亂碼的解決方法。

無 bom utf-8 由於 qt5 內部使用 unicode 編碼,對於無bom utf-8 編碼的原始檔,可以直接使用字串而不需特殊轉換。

測試程式如下:

1#include "mainwindow.h"

2

3#include

4#include

5#include

6usingnamespacestd;

7

8intmain(intargc,char*argv)

9

程式執行結果如下圖:

有 bom utf-8 對於帶 bom 的 utf-8 檔案,可以使用 qstring::fromlocal8bit 的方法解決亂碼問題,測試程式如下:

1#include "mainwindow.h"

2

3#include

4#include

5#include

6usingnamespacestd;

7

8intmain(intargc,char*argv)

9

程式執行結果如下圖:

gbk 對於 gbk 編碼的檔案,同樣可以使用 qstring::fromlocal8bit 的方法解決,測試程式如下:

1#include "mainwindow.h"

2

3#include

4#include

5#include

6usingnamespacestd;

7

8intmain(intargc,char*argv)

9

程式執行結果如下圖:

對於 qt5 中的 qtextcodec 貌似並不能解決亂碼問題,測試程式如下:

1#include "mainwindow.h"

2

3#include

4#include

5#include

6#include

7usingnamespacestd;

8

9intmain(intargc,char*argv)

10

程式執行結果如下圖:

Qt MessageBox類簡單使用

qmessagebox類提供了乙個有一條簡短訊息 乙個圖示和一些按鈕的模式對話方塊。訊息框用於提供情報資訊並且問一些簡單的問題。qmessagebox提供了乙個不同資訊的範圍,大致按兩個軸進行排列 嚴重程度和複雜程度。按嚴重程度分 訊息 警告 錯誤。按複雜程度分為乙個按鈕 確定 的簡單訊息 或者用於...

Android Socket 中文亂碼徹底解決

主要還是伺服器端和客戶端編碼匹配的問題 不管用何種編碼 只要兩端匹配 就ok不要假定預設編碼 乙個個去試 不如一行code 關鍵 public static final string bm gbk 全域性定義,以適應系統其他部分 inputstream is bufferedreader br bw...

SpringMVC中post get亂碼解決

由於中介軟體為tomcat,使用者請求和返回的響應都需要經過tomcat,tomcat預設編碼為iso 8859 1和我們程式的編碼 一般為utf 8 不同,導致post get請求亂碼。post亂碼解決方案 在web.xml中新增編碼過濾器來解決,可以自己編寫過濾器,最常用的方法是使用spring...