Qt Creator 中文編譯失敗 怎么辦


在Qt Creator 中c++源碼有中文字符,結果不能編譯成功。

代碼

QMessageBox::warning(this, "警告","用戶名密碼錯誤",QMessageBox::Yes);

報錯如下:

-1: warning: C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
error: C2001: newline in constant

解決方法:

首先源碼的保存格式是UTF-8。Qt creator 的菜單里 編輯-Select Encoding,可以選擇編碼。以及工具-選項->文本編輯器->行為->文件編碼里要選擇UTF-8,BOM: 如果是UTF-8則自動添加。

  1. 給中文字符串加QStringLiteral宏或QString::fromLocal8Bit函數:QStringLiteral("你好中文!");
    不過,在這兩種形式下,你都無法用tr方法來創建翻譯了。

  2. 另一種方法是宏定義:

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

這個宏告訴MSVC,執行字符集是UTF-8編碼的,別瞎整成GB2312的!還有個好處,就是能用tr包中文,方便日后的翻譯。

ps

之前的報錯,我還發現,如果是偶數個中文就不會報錯,奇數個就會編譯報錯。

同樣適用Qt中文亂碼的問題。
其實主要原因是用MSVC編譯造成的。

參考:Qt與MSVC中文亂碼問題的解決方案


免責聲明!

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



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