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,然後保存並編譯源文檔。
然后其他方法网上都有,感觉这个比较有效!
摘自:https://hk.saowen.com/a/f7b8bbb3193c637335cf52563a3d130fee3e2513c679a5db236a783dc2e9bdba
原文:https://www.cnblogs.com/zlszls3113373723/p/9992565.html