原因
- qt create文件使用的是UTF-8編碼,但MSVC生成的可執(zhí)行文件的編碼是windows本地的字符集如GB2312。兩者不兼容出現(xiàn)無法編譯通過或者出現(xiàn)亂碼
- 定義奇數(shù)個中文字符時會報常量字符串中出現(xiàn)換行的錯誤(
newline in constant),偶數(shù)個中文可以編譯通過并正常顯示
解決方法
- 工具-選項-文本編輯器-行為-文件編碼中 設(shè)置
UTF-8 BOM為如果編碼是UTF-8則添加 - 并在任何顯示定義的字符串用宏函數(shù)
QStringLiteral(str)封裝起來,需注意的是不能再使用tr()函數(shù)用于編譯字符串
image.png - 如果想使用QString的格式化功能可以再使用
QString()繼續(xù)封裝QStringLiteral(str)
QStringLiteral 宏
- 使用 QStringLiteral 宏可以在編譯期把代碼里的常量字符串 str 直接構(gòu)造為 QString 對象,于是運行時就不再需要額外的構(gòu)造開銷了
- 常用來解決中文亂碼問題





