今天乙個兄嘚在用codeblocks寫專案的過程中,出現了中文亂碼的現象,報錯是這個樣子的:error: converting to execution character set: illegal byte sequence|(大概就是非法字元的意思)
經過我一下午的摸索和結合網上各位的大佬的部落格,把原因和解決方法簡述如下:
出現中文亂碼大部分就是你的系統本地編碼和codeblocks的編譯器編碼不一致!!!!
專業點來說,就是本地化沒做好,codeblocks編譯器儲存源**的編碼是系統預設的,也就是windows預設編碼(我說的是你用的是windows系統的情況下哈),windows的預設編碼就是windows-936字符集,也叫gbk編碼。
但是呢(關鍵就在這),gcc(mingw)編譯器編譯預設是按照utf_8解析的,語法規則就不一樣,解析出來的怎麼可能是對的呢,就像你按英語的語法把中文翻譯成英文,卻把英文按德語的語法還原成中文,結果當然不可能一致咯,不亂碼才不正常咯,所以呢,把這兩者同一編碼格式就?了。
好了,說一下解決方案:
修改原始檔儲存編碼路徑:setting——editor——encoding settings
如下就是原始檔儲存的編碼:
說一下:
use encoding when opening files:表示當開啟這個檔案的時候使用這個格式,第一次儲存的時候也是使用這個格式
as falling encoding:作為候選編碼
as default encoding(bypassing c::b』s auto-detection):作為檔案儲存的預設編碼格式和開啟檔案的編碼格式)
2 .修改編譯器解析編碼格式和生成執行檔案時採用的編碼格式:setting——compiler——other compiler options
如果剛剛你的檔案儲存編碼格式是windows-936,那麼就新增以下語段:
-finput-charset=windows-936或者gbk
-fexec-charset=windows-936或者gbk
如果是utf-8,那麼fexec-charset就可省略,或是把上所列舉的語段改為utf-8便可,如果不設定fexec-charset預設認為執行環境是utf-8,在linux系統下是沒有問題的,但是在windows下會出現亂碼。
第一行語段表示編譯器編譯的時候對輸入的原始檔解釋用的編碼;
第二行表示編譯好的執行檔案所用編碼。
這三者都達到同一,便不會出現亂碼情況!
注意:要配置好,再把亂碼的**重新新建乙個新檔案來儲存,再編譯一遍就不會出錯了,如果你沒有重新新建檔案執行**,即使你配置好了,還是無法執行,因為他的原始檔編碼格式是之前的編碼格式,比如說utf-8,就會出現以下報錯:
Chrome下AJAX POST出現中文亂碼的問題
最近做的乙個後台系統中,前後端都使用介面通訊,並且為了保證開發進度,確保只相容新式瀏覽器,chrome firefox。結果在chrome瀏覽器中,在處理ajax向後台提交資料表單資訊時,出現中文的地方,post到後端的都是亂碼。先確保所有的js html模板檔案 以及合併 壓縮後的js檔案都是ut...
Linux下TOMCAT中日誌出現中文亂碼
紅帽子as4,其中tomcat為6.0。結果tomcat中日誌出現中文亂碼 解決方法修改i18n 最後的配置為 root linux etc more etc sysconfig i18n lang zh cn.utf 8 supported zh cn.utf 8 zh cn zh sysfont...
codeblocks中文編碼問題
其實這是老調重彈的問題了,在windows下面出現中文亂碼大多都是編碼格式的問題不一致的問題,最簡單的就是uft 8和gbk衝突的問題。如果乙個檔案本來是以utf 8存的,但是以gbk開啟,當然會出現亂碼了。linux中中文常用的格式是utf 8,mingw是gcc的編譯器,預設是utf 8格式,但...