原因
- 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)造開銷了
- 常用來解決中文亂碼問題