CodeBlocks 中文乱码"converting to execution character set illegal sequence"

本文详细介绍了在使用CodeBlocks编译器时遇到的编码问题及其解决办法。通过调整编译选项和文件编码设置,确保输入文件和执行文件的编码一致,有效解决了因默认编码格式引起的错误。

遇到的问题如标题所示,看了几篇的解决教程,这里分享下我的看法和解决方式:

CodeBlocks默认保存的格式是WINDOWS-936字符集,也就是GBK编码。这里不改动其他,直接在settings->compiler->Global compiler settings->Other options添加如下所示。

前者表示编译的时候输入文件的编码解释格式,后者表示生成的执行文件执行的时候显示用的编码格式。因为前面保存格式是WINDOWS-936,所以这里设置为GBK。

-finput-charset=GBK
-fexec-charset=GBK

在这里插入图片描述
settings->Editor->gernal settings->Other settings,这里可以更改默认保存的文件编码格式,如果更改为UTF-8,那么上面对应解释和输出的格式也要更改为UTF-8。

注意:无论怎样修改,一定要保证两边格式相同!!!
在这里插入图片描述

### VSCode 中字符集转换错误解决方案 当在 VSCode 编辑器中遇到 `error: converting to execution character set: Illegal byte sequence` 错误时,这通常是因为源文件编码与编译器预期的目标字符集不匹配造成的。以下是详细的解决方法: #### 设置正确的输入和执行字符集 可以通过指定 `-finput-charset=UTF-8 -fexec-charset=GBK` 参数来设置 GCC 或 G++ 的输入和输出字符集。然而,在某些情况下,这种配置可能会引发非法字节序列的错误[^1]。 如果上述参数导致问题,则建议尝试移除这些选项并让编译器使用默认设置处理字符集转换。对于大多数现代开发环境来说,默认配置已经能够很好地支持多种语言文字[^3]。 另外一种方式是通过修改项目的 CMakeLists.txt 文件或其他构建工具配置文件中的相应部分来进行调整。例如,在 CMake 中可以这样定义: ```cmake set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finput-charset=UTF-8 -fexec-charset=UTF-8") ``` #### 修改终端编码设置 有时该问题是由于命令行界面(CLI)或集成开发环境中内置终端窗口所使用的字符编码不同步引起的。可以在 VSCode 用户/工作区设置里加入如下 JSON 配置项以确保一致性的 UTF-8 编码: ```json { "terminal.integrated.shellArgs.linux": ["-l"], "terminal.integrated.env.windows": { "CHCP": "65001" }, "files.autoGuessEncoding": true, "files.encoding": "utf8", } ``` 以上配置适用于 Windows 平台;如果是 Linux/macOS 可能不需要特别设定 CHCP 值。 #### 使用合适的宽字符集 针对特定应用场景可能还需要考虑宽字符的支持情况。比如 Qt 应用程序会涉及到多国语言显示等问题,此时可利用 `-fwide-exec-charset` 来指明宽字符串常量应采用何种编码存储于最终二进制文件之中[^2]。 综上所述,要彻底解决问题可以从以下几个方面入手:检查项目内所有涉及文本数据的地方是否有不当之处;确认编辑器本身以及关联插件是否正确设置了相应的编码属性;最后才是调整编译指令里的字符集相关参数直至找到最适合自己需求的一组组合方案。
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值