QT學習筆記(6)解決中文編譯不通過問題


 

一、環境配置

win10 64位系統、VS2013環境、QT5.6.2版本、QT Creator軟件

我使用QT Creator進行程序的編譯運行。

二、問題提出

我在使用QT Creator進行程序編譯運行時,如果字符串的類型是英文則沒有問題,但是如果是中文,則會報 C2001:常量中有換行符 的錯誤。

三、錯誤原因

(1)在QT中,默認的編碼是Unicode,我們書寫的代碼文件被強制轉換為utf8,但是,在簡體中文版的Windows操作系統中,默認編碼卻是GBK。

(2)因此,在QT編譯程序時,如果代碼含有特定中文字符,QT的編譯器就會發生誤判,向我們報告錯誤"常量中有字符串"。

(3)當然,如果你使用別的一些中文字符,恰巧該字符編碼不含這些特定字符,則編譯時不會報錯,但是程序運行時中文字符卻往往不能正常顯示。

四、解決方法

1、折中的解決方法:更改設置或調整代碼,避免編譯錯誤

(1)更改設置

打開QT Creator,店家菜單欄“工具”  》》“選項”

在“文本編輯器”》》“行為”選項卡中,將文件編碼更改為“UTF-8”,並且選擇“如果編碼是UTF-8則添加”

(2)代碼調整

或者,在代碼中用QString.toLocal8Bit( ) 將 Unicode 編碼轉換為本地系統編碼

2、推薦的解決方法:將本地編譯轉換為Unicode交由QT處理

(1)使用以上方法之后,雖然編譯時將不會報“常量中有換行符”錯誤,但不能保證中文字符能正確顯示。

(2)若想字符得以正常顯示,則可以使用 QString::fromLocal8Bit 來將本地字符編碼轉換為 Unicode 形式的 QString。畢竟,在這個越來越全球化的時代,Unicode 才是王道。

 

參考:https://jingyan.baidu.com/article/67508eb42997949cca1ce49e.html


免責聲明!

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



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