装了多语言包反而更乱是因为多个插件争抢编码控制权,如converttoutf8与codecs37同时启用会导致双重解码嵌套乱码;需禁用codecs37等冗余插件、清理残留配置并重启st。

为什么装了多语言包反而更乱?
不是插件装多了,是多个插件在争抢同一个编码控制权。比如 ConvertToUTF8 和 Codecs37 同时启用时,两者都会拦截文件加载流程、各自做编码检测和转换,结果一个按 GBK 解,一个又按 UTF-8 重解,中文直接变成两层嵌套乱码(如“锟斤拷”再被误解成“且)。这类冲突在 ST4 上尤其明显,因为 Sublime Text 4 的 API 层对编码钩子的调用顺序更敏感。
怎么判断是不是多插件冲突?
打开一个已知是 GBK 编码的中文文件,观察三处信号:
- 右下角状态栏显示的编码名是否频繁跳变(比如刚显示“GBK”,几秒后变成“UTF-8”)
- 执行
Reopen with Encoding → Chinese (GBK)后能正常显示,但过几秒又自动切回乱码 - 打开
Tools → Developer → Show Console,看到重复出现类似ConvertToUTF8: detected encoding GBK和Codecs37: trying UTF-8 fallback的日志
满足任意两条,基本就是插件打架。
必须停掉一个,别试图共存
ConvertToUTF8 和 Codecs37 功能高度重叠,但底层机制不同:ConvertToUTF8 做的是“加载转 UTF-8 / 保存还原原始编码”,Codecs37 是“原生支持多种编码读写”。两者同时工作,等于让文件被解码两次、再编码两次,中间任何一步出错都不可逆。
- 优先保留
ConvertToUTF8:它对 GBK/BIG5/EUC-KR 的检测准确率更高,且社区维护活跃(最新 commit 是 2020 年,但至今仍是 ST3/ST4 最稳方案) - 彻底禁用
Codecs37:进入Preferences → Package Control → Disable Package,选中它;别只删文件夹,残留配置可能还在生效 - 检查是否还有其他编码类插件:比如
AutoEncoding、ChineseLocalization(带编码模块的汉化包),一并禁用
清理残留配置,否则冲突照旧
插件禁用后,旧配置仍可能干扰行为。重点检查两处:
-
Preferences → Settings里删掉所有含"detect_encoding"、"fallback_encoding"(除非你明确设为"Chinese (GBK)")、"codecs"字段的行——这些是Codecs37的遗产,和ConvertToUTF8不兼容 -
Preferences → Package Settings → ConvertToUTF8 → Settings中确认只有必要项:"convert_on_load": true、"convert_on_save": true、"max_detect_lines": 1000;删掉"auto_detect": true这类冗余开关 - 重启 Sublime Text,不要只是重载窗口——热重启无法清空插件运行时状态
真正容易被忽略的是:某些多语言包会悄悄修改 Default.sublime-settings,把 "default_encoding" 改成非 UTF-8 值。务必核对这个字段是否仍为 "UTF-8",否则新建文件也会乱码。











