使用codeblocks时会偶尔出现下面两种编码报错问题
1. converting to execution character set: Illegal byte sequence
2. Failure to convert GBK to UTF-8
如下图所说的,源文件编码需要和gcc编译器读取源文件所用编码一致,编译器编译后输出的可执行文件编码需要和系统编码一致,满足两个一致,才不会出现上面说的编码报错问题。
上图四种编码的配置及查看方法
codeblock的源文件的编码格式在 edit -> file encoding 可以看到和更改,如下图
gcc编译器的默认读取编码为UTF-8,可在 settings -> compile -> other compiler options 显式配置你需要的字符集, -finput-charset=UTF-8
;
编译器编译输出的可执行文件编码默认也是UTF-8的,可在 settings -> compile -> other compiler options 显式配置你需要的字符集, -fexec-charset=GBK
;
如下图
系统编码,Windows一般都是GBK,Linux是UTF-8,所以在对应系统下,就可将编译器编译后的可执行文件编码设为对应的系统编码