codeblocks編寫c語言中文亂碼問題


em遇到過這個好多次了,有點點背,在網上搜了一下,基本上都是改編譯器和編輯器的,but。。。對我並沒有,終於找到一個解決方案了,記錄一下,嘻嘻~

剛開始使用Code::Blocks開發Windows中文應用進程的朋友們,如果在代碼中使用了中文本符串,編譯時可能遇到過Illegal byte sequence或Failure to convert GBK to UTF-8這樣的錯誤提示。這類錯誤的原因在於源代碼文檔編碼和編譯器編碼設置不一致造成的。

Code::Blocks 編輯器保存源文檔用的編碼。 

默認情況下,是保存為windows本地編碼的,也就是WINDOWS-936字符集,也就是GBK編碼。但是GCC編譯器默認編譯的時候是按照UTF-8解析的(linux默認字符集是UTF-8),如果沒有聲明編碼格式,編譯器會把GBK當成UTF-8解析,從而導致編譯錯誤。編譯時報錯: 
error: converting to execution character set: Illegal byte sequence. 

其實要解決這個問題很簡單,編寫Code::Blocks的人只需要在調用編譯器之前檢測一下源文檔是什麼編碼,然後就自動讓編譯器用什麼編碼進行解釋,問題就解決了。只是很可惜,Code::Blocks編寫的人可能還沒有這麼做,或許是對本地化認識不夠吧,也可能是覺得沒必要吧?(所以就給初學的人帶來問題了,所以就覺得易用性不如微軟了,免費和商業的東西還是有差距的。。。) 

通常情況下,只要在Code::Blocks(13.12)中將源代碼文檔保存為UTF-8格式,就可以消除上述錯誤。操作方法是在源代碼文檔窗口激活的情況下,通過在編輯(Edit)菜單下的文檔編碼(Encoding)子菜單中選擇BOM和UTF-8,然後保存並編譯源文檔。 
image 

然后其他方法網上都有,感覺這個比較有效!

摘自:https://hk.saowen.com/a/f7b8bbb3193c637335cf52563a3d130fee3e2513c679a5db236a783dc2e9bdba


免責聲明!

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



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