一、環境配置
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