qt5.12 c2001常量中有換行符問題的解決辦法
阿新 • • 發佈:2019-01-03
當我們使用Qt程式設計時,如果程式程式碼中使用了中文字元,編譯程式有時會出現莫名其妙的編譯錯誤,提示“常量中有換行符”。
這究竟是怎麼回事,又該如何解決呢?
錯誤原因
在 Qt 中,預設的編碼是 Unicode,我們書寫的程式碼檔案被強制轉換為 utf8,但是,在簡體中文版的 Windows 作業系統中,預設編碼卻是 GBK。
因此,在編譯 Qt 程式時,如果程式碼中含有特定中文字元,Qt 的編譯器就會發生誤判,向我們報告“常量中有換行符”。
當然了,如果你使用別的一些中文字元,恰巧該字元編碼不含這些特定字元,則編譯時不會報錯,但程式執行時中文字元卻往往不能正常顯示。
那麼,這又該如何解決呢?知道了原因,解決起來也很簡單,主要思路有兩種:
一種是折中的解決方法:更改設定或調整程式碼,避免編譯錯誤
另一種是推薦的解決辦法:將本地編碼轉換為 Unicode 交由 Qt 處理
思路一:折中的解決辦法
折中的解決方法也有兩種:
1、更改設定
開啟Qt Creator,點選選單“工具”-“選項”。
在“文字編輯器”-“行為”選項卡中,將檔案編碼更改為 UTF-8,並且選擇“如果編碼是UTF-8則新增”。
2、程式碼調整
或者,在程式碼中用 QString.toLocal8Bit( ) 將 Unicode 編碼轉換為本地系統編碼。
經過以上處理之後,編譯期就不會再報“常量中有換行符”錯誤了。
推薦的解決辦法
使用以上方法之後,雖然編譯時將不會報“常量中有換行符”錯誤,但不能保證中文字元能正確顯示。
若想字元得以正常顯示,則可以使用 QString::fromLocal8Bit 來將本地字元編碼轉換為 Unicode 形式的 QString。畢竟,在這個越來越全球化的時代,Unicode 才是王道。