Qt 中文亂碼解決方案


一、問題是什么?

在學習Qt編程的過程中,大多數人都遇到過中文亂碼的問題。總結起來有三類:

1. Qt Creator中顯示的漢字變為亂碼,編輯器上方有“Could not decode "..." with "UTF-8"-encoding. Editing not possible.”的錯誤提示。此時,出現亂碼的文檔是不可編輯的。

2. Qt Creator中顯示的漢字正常,但編譯的時候會出現“常量中有換行符”等一系列錯誤報警。其實,這也是文字編碼的問題。

3. 編譯時未報錯,但生成的程序中文亂碼。

原因. Qt Creator的編輯器默認使用UTF-8(代碼頁65001)編碼來讀取文本文件。而Visual Studio保存文件時默認采用的是本地編碼,對於簡體中文的Windows操作系統,這個編碼就是GB2312(代碼頁936)。如果使用Qt Creator讀取由Visual Studio創建的文件,那么編輯器就會以UTF-8編碼格式讀取GB2312編碼格式的文件,出現中文亂碼,因為這兩套編碼系統對漢字編碼是不同的。至於英文部分不會亂碼,是因為UTF-8和GB2312在單字節字符部分是兼容的。


解決辦法:

首先,要把項目中所有的頭文件和源文件全都轉換成UTF-8+BOM編碼保存,全選文本,然后右鍵選擇Add UTF-8 BOM on save。

1. 第1個問題不存在了。

2. 第2個問題也不存在了。

3. 第3個問題,你也可以用上個方案中的方法來解決,但有更好的方法。那就是要用到中文字符的頭文件和源文件開頭加上MSVC的一個宏:

1 #if _MSC_VER >= 1600
2 #pragma execution_character_set("utf-8")
3 #endif

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM