Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>编码自动切换器 (GBK/GB18030/UTF-8)New to Visual Studio Code? Get it now.
编码自动切换器 (GBK/GB18030/UTF-8)

编码自动切换器 (GBK/GB18030/UTF-8)

GuGuDong

|
7 installs
| (0) | Free
自动检测文件编码并以正确编码打开,防止中文乱码;支持 UTF-8 与 GBK/GB18030 一键互相切换
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

编码自动切换器 (encoding-guard)

打开文件时自动检测编码格式并以正确编码显示;内核猜不对的文件自动打开正确编码视图;检测到 AI 写坏编码时自动修复还原(可逆损坏,内容与行数不变)。编码列表可配置,不写死 GBK——任何 iconv-lite 支持的编码都可适配。

一作者:上了个大笔当

二作者:咕咚咕咚

功能

  • 自动检测并正确打开(主要功能):打开文件时自动检测编码,猜错时按检测到的编码重新打开纠正,无需任何操作
  • 正确编码编辑器:内核编码重开能力缺失时(如 Trae SOLO),自动打开按正确编码解码的可编辑视图(等效于按编码重开),自动关闭乱码标签,正常编辑、Ctrl+S 按原编码保存回文件;文件被外部修改时视图自动刷新
  • AI 改写自动纠正:AI 工具改写已打开的文件后,自动比对磁盘内容与编辑器显示,不一致则重开纠正。仅当整个文件字节编码一致(仅内核标签猜错)时有效;若新增/修改部分的编码与既有内容不一致(混合编码)或内容已损坏,重开无法恢复,此类情况由「外部写入监督」告警提示
  • 外部写入监督与自动修复:AI 不经编辑器直接改写磁盘文件时,后台监听变化并做编码体检。可逆损坏自动修复还原(双重转码还原 / 混合编码分段转码 / 编码迁移回滚),纯字节转码保证内容与行数不变、修复前留 .bak 临时备份(成功后自动删除);不可逆损坏(字节已丢失)无法恢复,仍告警提示回退
  • 选择编码保存:编辑器标题栏按钮,下拉选择目标编码后转换保存;按源编码解码磁盘字节再写回,中文内容不损坏;有未保存修改时拒绝转换
  • 以正确编码查看:命令面板手动对当前文件打开正确编码视图

命令

命令 说明
编码切换: 选择编码保存 下拉选择目标编码(UTF-8 及设置中的检测编码),转换并保存
编码切换: 以正确编码查看 对当前文件打开正确编码可编辑视图

配置

设置项 默认值 说明
encoding-guard.detectionEncodings ["gbk", "gb18030"] UTF-8 之外要自动识别/纠正/转换的编码列表(iconv-lite 支持的编码名,如 big5、shift_jis、cp1252 等),按优先级排序
encoding-guard.kernelGuessEncodings ["utf8", "gbk", "gb18030"] 写入内核 files.candidateGuessEncodings 的候选编码
encoding-guard.applyKernelGuess false 是否把上面列表写入内核猜码设置。默认关闭:部分内核对候选列表支持不佳,强制写入会导致猜测失效、只回落默认编码
encoding-guard.autoRepairBytes true 检测到可逆编码损坏(双重转码/混合编码/编码迁移)时自动修复文件字节;关闭后只告警不修改
encoding-guard.repairBackup true 自动修复前写 .bak 临时备份(成功后自动删除)
encoding-guard.maxRepairBytes 5242880 自动修复的文件大小上限(字节),超过只告警

默认配置对中国 GBK 环境开箱即用;其他环境(Big5、Shift-JIS 等)修改 detectionEncodings 即可。

工作机制

打开文件的纠正决策链:

打开 GBK 等非 UTF-8 文件
  ├─ 内核猜对 → 正常显示(结束)
  ├─ 猜错 → 命令式重开(自动侦查内核的 reopenWithEncoding 类命令)
  │     └─ 失败 → 关闭重开 1 次(内核猜测是确定性的,多试无益)
  └─ 全部失败 → 自动打开正确编码可编辑视图(单视图,替换乱码标签,Ctrl+S 按原编码写回)

其他机制:

  • 通用检测:BOM-UTF8 → UTF-8 字节校验 → 按配置编码列表依次试解码(无替换字符即命中)
  • 每次重新打开都重新检测:用户重新打开文件时自动清除该文件的历史结论(指纹/冷却/视图记录),重新走完整纠正链;插件内部重开重建文档模型的事件会被标记拦截,不与用户打开混淆,也不产生循环
  • 防打扰:串行队列 + 失败 10 分钟冷却(仅约束外部改写触发的重试,用户打开不受限)+ 编码编辑器开着时不重复打开
  • 外部写入监督:FileSystemWatcher → 只读头部 64KB 探测 → 截断容错(末尾 1~3 字节修正)→ 二进制/文本扩展名双层过滤 → 500ms 防抖 → 全文一致性校验 → 日志文件只记日志不弹窗
  • 字节级自动修复(可逆损坏):只做纯字节转码,绝不重组文本——
    • 双重转码还原:GBK 字节经 latin1/cp1252 路径被写成 UTF-8 时,逆向转码 100% 还原
    • 混合编码分段转码:原 GBK 文件被 AI 用 UTF-8 写入部分行(或对称场景)时,逐行判定编码归属,少数派行无损转成多数派编码;行内混合无法可靠切分,保守放弃并告警
    • 编码迁移回滚:内容完好但编码被整体改写(GBK 文件被 AI 整体按 UTF-8 重写,或对称地 UTF-8 文件被按 GBK 重写)时,自动转回监听记录的原编码(依赖 lastEnc 历史记录,会话内首次写入无从判定时不触发)
    • 三道硬校验(无损解码 / 行数不变 / 行级 round-trip),任一失败放弃修复退回告警
    • 并发安全:静默窗口(指纹 2 秒不变才动手)+ 动手前重读比对 + 临时文件 rename 原子替换 + 回写对抗(AI 用旧快照覆盖时自动再修,上限 3 次后告警提示让 AI 重新读取)
    • 行数不变有数学保证:UTF-8 与 GBK/GB18030 的多字节序列都不含 0x0A,纯转码不会吞掉换行符
  • 不污染配置:默认不改写内核编码设置;历史版本写入过的全局候选列表会自动检测并恢复
  • 保存防覆盖:编码编辑器 Ctrl+S 时重新检测文件当前实际编码并按它写回;若编码已被外部改写(与打开时不一致),阻止保存并弹警告,防止覆盖外部内容

安装

  • 扩展面板右上角 ··· → 从 VSIX 安装...,选择 encoding-guard-x.y.z.vsix
  • 本地开发调试:F5 启动扩展开发宿主窗口

构建

build.bat

自动完成:安装依赖 → 类型检查 → esbuild 构建 → 生成 .vsix 安装包。

诊断

输出面板(Ctrl+Shift+U)选择「编码切换器」查看检测、命令侦查、重开、视图、转换的详细日志。

已知限制

  • 编码编辑器中编辑后 Ctrl+S 按原编码(如 GBK)写回,超出该编码字符集的内容(如 emoji)会丢失,属编码本身限制
  • 持续追加的日志文件不做外部改写校验与自动重开(追加与全文比对天然竞态),仅保留损坏告警
  • 同一行内混合两种编码的内容(AI 在已有中文的行内改写)无法仅凭字节可靠切分归属,自动修复会保守放弃并告警,不做猜测性修复
  • AI 写盘时已丢失字节(解码出 U+FFFD)的损坏在数学上不可恢复,任何工具都无法还原,只能告警回退
  • 未保存的新文件(Untitled)无法转换编码,需先保存
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft