天天看點

Qt中文顯示問題--針對MSVC編譯,(MingW除外)

1 檔案顯示正常, 卻報錯"newline in constant"或者"常量中有換行符"? 這種情況,往往出現在奇數個漢字中. 這是為什麼呢? 這是MSVC在編譯時的解讀問題, MSVC在解讀檔案時會根據檔案有沒有BOM,, 如果有BOM,那麼按照BOM的方式去解讀, 如果沒有BOM,那麼按照本地編碼( 對于簡體中文的Windows作業系統就是GB2312)去解讀.是以我們的問題就出現了, 一般我的QT Creator中的項目editor設定裡面預設編碼是UTF-8,BOM裡呢如果存在則保留. 但是如果不存在呢? 

解決方法

就是把設定為add if encoding is UTF-8, 再運作, OKAY, 完美.

2.編譯正常通過, 生成出來的程式卻是亂碼.  或者用qDebug()輸出的中文時, 檔案中顯示正常, 顯示出來是亂碼. 這是因為MSVC生成的可執行檔案是本地編碼(GB2312), 而QT會以UTF-8編碼來識别GB2312的文字. 解決方式就是在檔案頭加上

#if _MSC_VER >= 1600

#pragma execution_character_set("utf-8")

繼續閱讀