天天看點

QT 中文編譯不通過 + 中文亂碼問題

Windows 7 + Qt 5.3 + Qt Creator 3.2.1(opensource)

問題描述:從别處找來的代碼,代碼中存在中文(不包括注解)的情況下編譯不通過,出現大量的低級編譯錯誤,但是将中文改成英文則編譯通過。

分析:看了這兩篇文章,收獲很大:http://blog.csdn.net/dbzhang800/article/details/7540905,http://hi.baidu.com/dbzhang800/item/431f800fcb653e6dd55a1142

文章講了Qt的源代碼字元集和執行字元集的差別,在windows下使用的是msvc編譯器,是以

源碼字元集:有BOM,有則按BOM解釋,無則使用本地Locale字元集(随系統設定而變)

執行字元集:使用本地Locale字元集(随系統設定而變)

解決方法:可能是原來的代碼作者是使用GBK儲存的,這裡重新設定一下,編譯——Select Encoding——GBK——按編碼儲存,這樣将帶有中文的源檔案儲存為了GBK編碼,可以編譯通過。

問題描述:編譯通過之後,中文顯示的是亂碼。

分析:同上兩篇文章,執行字元集可能顯示為了Latin。

解決方法:将所有用到QString 中文的地方,把 tr("中文漢字")替換成QString::fromLocal8Bit("中文漢字")。

這是一種臨時解決問題的笨方法,希望以後能找到一個簡單的方法。當然,最好在自己寫程式的時候,将全部的編碼都設定成UTF-8,省心省力。