Embedded C Encoding Fixer
自动检测 C/C++ 源文件的真实编码,避免 GBK/GB2312 编码的中文注释或打印字符串在 VS Code 里显示乱码——这是国内嵌入式 C 工程里的常见痛点。
功能
- 自动检测并静默重开:打开
.c/.h/.cpp/.hpp/.cc/.cxx/.hxx/.inc 文件时,读取原始字节判断真实编码(UTF-8 / UTF-8 BOM / GB18030),一旦发现当前解码是乱码,会静默地用正确编码重新打开文件,并在状态栏给一条几秒后自动消失的提示。
- 纯 ASCII 文件不受影响:检测器对全 ASCII 内容直接判定 UTF-8,跳过解码尝试,不会误触发。
- 一键转换为 UTF-8:右键菜单命令“转换为 UTF-8 并保存”,把检测到的非 UTF-8 文件(如 GBK/GB18030)覆盖转换为 UTF-8 字节,从根源解决乱码;操作前会二次确认,因为会覆盖原文件。
- 批量转换:命令面板中的“批量转换工作区 C/C++ 文件为 UTF-8”,按配置的 glob 扫描整个工作区并逐个转换。
配置项
| 配置项 |
默认值 |
说明 |
fileEncodingFixer.enable |
true |
是否启用打开文件时的自动编码检测与切换 |
fileEncodingFixer.filePatterns |
["**/*.c", "**/*.h", ...] |
自动检测生效的文件 glob 列表 |
fileEncodingFixer.showNotification |
true |
自动切换编码后是否在状态栏显示一次性提示 |
fileEncodingFixer.confirmBeforeConvert |
true |
执行“转换为 UTF-8 并保存”前是否需要二次确认 |
已知限制
- VS Code 没有提供“单文件编程式设置解码”的公开 API,本插件通过临时修改
files.encoding 配置 + 关闭/重开对应标签页的方式实现按需切换编码,切换过程中会有短暂的配置改动(对其他并发打开的文件理论上有极小概率的时序影响)。
- 目前仅在 UTF-8 与 GB18030(GBK/GB2312 的超集)之间判别,不支持 Big5、Shift-JIS 等其它编码。
开发
npm install
npm run compile # esbuild 打包到 dist/
npm test # 运行编码检测器的单元测试
按 F5 启动 Extension Development Host 进行手动调试。
| |