codeblocks出現中文亂碼解決方案

2021-10-07 10:09:42 字數 1680 閱讀 6982

今天乙個兄嘚在用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格式,但...