converttoutf8在st4.4+上已失效,因其自2021年停更且api变更导致状态栏不显真实编码、自动重载失灵、保存带bom报错及文件静默截断;应改用持续维护的codecs37插件,它支持30+编码、安装即用、状态栏显示真实编码并可点击切换重载。

ConvertToUTF8 插件在 Sublime Text 4.4+ 上已基本失效,不建议安装;改用 Codecs37 是当前最稳妥的方案。
ConvertToUTF8 为什么不能用了
它自 2021 年起就停止维护,ST4.4+ 的 API 变更导致几个关键功能直接失灵:
- 状态栏不再显示真实编码(始终显示“UTF-8”,哪怕文件是 GBK)
- 自动重载逻辑失效:GBK 文件打开仍是方块,不会自动切换解码
- Save with Encoding 后仍悄悄写入 BOM,触发
Non-UTF-8 code starting with '\xef'报错 - 与 ST4 的新缓存机制冲突,偶尔导致文件内容被静默截断
Codecs37 怎么装、怎么用
它专为 ST4 重构,支持 30+ 编码(含 GBK/GB18030/Shift-JIS/UTF-8-BOM),且不改默认行为,只增强识别和切换能力:
- 按
Ctrl+Shift+P→ 输入Install Package→ 回车 → 搜索Codecs37→ 安装 - 装完无需重启,打开一个乱码文件:右下角状态栏会立刻显示真实编码(如
GBK) - 点击该编码名 → 选
Reopen as GBK(不是“Convert to”)→ 中文立即正常 - 确认无误后按
Ctrl+S,它会自动以 UTF-8(无 BOM)保存,不破坏原始语义
fallback_encoding 配置别写错
很多人照抄网上教程,在 Preferences.sublime-settings 里加 "fallback_encoding": "UTF-8",这行完全无效——Sublime 内部根本不认这个字符串。
- 正确写法是:
"fallback_encoding": "Chinese (GBK)"(用于打开未声明编码的老 GBK 文件) - 同时必须配
"default_encoding": "UTF-8"(新建/另存文件默认用 UTF-8) - 务必删掉配置中可能存在的
"detect_encoding": true,它会让 Sublime 主动跳过 UTF-8 BOM 去试 GBK,反而把带 BOM 的 UTF-8 文件判成乱码 - 加一行
"save_with_bom": false,否则即使设了default_encoding,保存时仍可能写入 BOM
Python 构建输出还是乱码?问题不在插件
Codecs37 解决的是“文件怎么读”,而控制台输出乱码是另一条链路:Python 进程输出字节流 → Sublime 构建系统按什么编码解析 → 终端怎么渲染。插件对它完全没影响。
- 新建构建系统
PythonUTF8.sublime-build,内容必须包含:"encoding": "utf-8"和"env": {"PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1"} - 删掉所有
chcp 65001类命令,它们会让 Windows 终端和 Sublime 解码逻辑打架 - 验证方式:脚本里打印
sys.stdout.encoding,输出必须是utf-8才算真正对齐
真正卡点永远是第一步:你得先确认文件真实编码是什么。用 file -i 文件名(Linux/macOS)或 Notepad++(Windows)看实锤,别信 Sublime 右下角显示的“UTF-8”——那只是它当前怎么读,不是文件本来就是 UTF-8。











