Qt报错 converting to execution character set:illegal byte sequence

在QtCreator的项目(pro)文件中,通过添加QMAKE_CFLAGS和QMAKE_CXXFLAGS,可以指定源文件(-finput-charset)和编译后程序中多字节字符串(-fexec-charset)的编码格式,确保使用GBK或UTF-8进行处理。

在Qt(Creator)的pro文件里加上以下代码:

QMAKE_CFLAGS += -fexec-charset=UTF-8 -finput-charset=GBK
QMAKE_CXXFLAGS += -fexec-charset=UTF-8 -finput-charset=GBK

-finput-charset: 指定源文件的编码(默认UTF-8)

-fexec-charset : 指定多字节字符串(const char*)常量在编译后的程序里保存的编码集(默认UTF-8)

-fwide-exec-charset : 指定宽字节字符串(const wchar_t*)常量在编译后的程序里的保存的编码集

### 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]。 综上所述,要彻底解决问题可以从以下几个方面入手:检查项目内所有涉及文本数据的地方是否有不当之处;确认编辑器本身以及关联插件是否正确设置了相应的编码属性;最后才是调整编译指令里的字符集相关参数直至找到最适合自己需求的一组组合方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i胡说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值