sublime打开文件乱码需手动reopen with encoding选gbk等编码;新建文件utf-8需设default_encoding,旧文件兼容需设fallback_encoding;save with encoding→utf-8才真正转码。

Sublime 打开文件乱码,根本不是“默认编码设低了”或“没装插件”,而是它压根不猜编码——你得先告诉它“这个文件其实是 GBK”,它才不会把两个字节当一个 UTF-8 字符来解。硬设 default_encoding 为 UTF-8 只会让新建文件变正常,对已存在的乱码文件毫无作用。
怎么立刻让当前乱码文件显示正常?
别点右下角状态栏的编码名瞎切,那是“用错的编码再错一遍”。正确动作只有一步:File → Reopen with Encoding,然后从列表里试:
-
Chinese (GBK)(90% 中文旧文件都适用) -
Chinese (GB2312)(老 Windows 记事本导出的文本) -
Western (Windows 1252)(含英文+少量中文的混合日志,常被误判)
只要中文一出来,就说明原始编码找对了。此时右下角状态栏会立刻变成对应编码名,比如 GBK。
怎么让新文件和保存都走 UTF-8?
default_encoding 和 fallback_encoding 是两回事,不能只改一个:
-
"default_encoding": "UTF-8":控制新建文件、Save with Encoding弹窗默认选啥——必须设这个,否则新建 .py/.js 文件打中文,一保存就变ä½ å¥½ -
"fallback_encoding": "Chinese (GBK)":仅在打开无 BOM 的老文件时兜底——它不干预真正的 UTF-8 文件,但能让 GBK 文件双击即开
这两项要一起加进 Preferences → Settings – User,格式严格:{ "default_encoding": "UTF-8", "fallback_encoding": "Chinese (GBK)" }。末尾不能有逗号,键名必须双引号。
为什么改了设置还是乱码?常见坑在哪?
多数人卡在三个地方:
- 已打开的乱码文件不会自动刷新——改完设置后,得手动对它执行一次
Reopen with Encoding → Chinese (GBK) - 装了
ConvertToUTF8插件?它和原生逻辑冲突,且早在 2020 年就从官方仓库下架;ST4.4+ 上大概率失效,建议卸载,换Codecs37 - 文件带 BOM(比如 Notepad++ 另存为 “UTF-8 with BOM”),Sublime 会优先识别 BOM 而忽略
fallback_encoding;验证方法:xxd 文件名 | head -n1,输出含ef bb bf就是带 BOM
Save with Encoding → UTF-8 到底干了什么?
这是唯一真正改磁盘内容的动作——把内存里已正确解码的 Unicode 字符,按 UTF-8 编码规则重新写回文件。它不依赖插件,不静默覆盖,失败会报错。
- 必须在
Reopen with Encoding显示正常后操作,否则等于把 GBK 字节流当 UTF-8 解,再以 UTF-8 写出,结果不可逆 - 选
UTF-8,不是UTF-8 with BOM;Python/Shell/Git 等工具普遍反感 BOM - 保存后右下角状态栏会变成
UTF-8,此时关掉重开仍正常,才算真正转成功
最易被忽略的点:没有“万能 fallback”——设 "fallback_encoding": "Chinese (GBK)" 后,一个纯英文 ISO-8859-1 日志也会被强行 GBK 解,café 变成 caé。真要兼顾多编码项目,不如放弃全局 fallback,养成打开即手动 Reopen with Encoding 的习惯。











