codeblocks出现中文乱码解决方案

7 篇文章 1 订阅
1 篇文章 0 订阅

今天一个兄嘚在用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
如下就是源文件保存的编码:
在这里插入图片描述

说一下:
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,就会出现以下报错:
在这里插入图片描述

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值