codeblocks出现中文乱码解决方案

今天一个兄嘚在用codeblocks写项目的过程中,出现了中文乱码的现象,报错是这个样子的:error: converting to execution character set: Illegal byte sequence|(大概就是非法字符的意思)

经过我一下午的摸索和结合网上各位的大佬的博客,把原因和解决方法简述如下:

出现中文乱码大部分就是你的系统本地编码和codeblocks的编译器编码不一致!!!!

  • 首先,你先确定安装的codeblocks,一定要用其官网上的带mingw的安装包!!!!

专业点来说,就是本地化没做好,codeblocks编译器保存源代码的编码是系统默认的,也就是windows默认编码(我说的是你用的是Windows系统的情况下哈),Windows的默认编码就是WINDOWS-936字符集,也叫GBK编码。

但是呢(关键就在这),GCC(MinGW)编译器编译默认是按照UTF_8解析的,语法规则就不一样,解析出来的怎么可能是对的呢,就像你按英语的语法把中文翻译成英文,却把英文按德语的语法还原成中文,结果当然不可能一致咯,不乱码才不正常咯,所以呢,把这两者同一编码格式就????了。

好了,说一下解决方案:
修改源文件保存编码路径:Setting——Editor——Encoding settings
如下就是源文件保存的编码:
codeblocks出现中文乱码解决方案

说一下:
Use encoding when opening files:表示当打开这个文件的时候使用这个格式,第一次保存的时候也是使用这个格式

As falling encoding:作为候选编码
As default encoding(bypassing C::B’s auto-detection):作为文件保存的默认编码格式和打开文件的编码格式)

2 .修改编译器解析编码格式和生成执行文件时采用的编码格式:Setting——compiler——other compiler options

codeblocks出现中文乱码解决方案
如果刚刚你的文件保存编码格式是WINDOWS-936,那么就添加以下语段:
-finput-charset=WINDOWS-936或者GBK
-fexec-charser=WINDOWS-936或者GBK

如果是UTF-8,那么fexec-charset就可省略,或是把上所列举的语段改为UTF-8便可,如果不设置fexec-charset默认认为执行环境是UTF-8,在Linux系统下是没有问题的,但是在Windows下会出现乱码。

第一行语段表示编译器编译的时候对输入的源文件解释用的编码;
第二行表示编译好的执行文件所用编码。

这三者都达到同一,便不会出现乱码情况!

参考文献:大佬文献(详细版)