先确认文件真实编码(如用file -i或Notepad++查看),再通过Reopen with Encoding正确解码;fallback_encoding须设为"Chinese (GBK)"而非"UTF-8",default_encoding设为"UTF-8",并添加"save_with_bom": false。

Sublime Text 显示中文乱码,不是文件坏了,也不是编辑器出问题,而是它用错了编码去读你的文件——比如拿 UTF-8 的规则去解一个 GBK 字节流,结果必然满屏方块。解决的关键不是“装插件”或“调字体”,是先搞清文件真实编码,再匹配正确的解码方式。
怎么确认文件真实编码,而不是瞎猜
Sublime 右下角显示的“UTF-8”只是它当前用什么解码,并不等于文件就是 UTF-8。你看到方块字,恰恰说明它正在用错的方式读。
- Linux/macOS 下运行
file -i 文件名,看输出里的charset=字段(例如charset=utf-8或charset=gbk) - Windows 用户直接用 Notepad++ 打开 → 右下角明确显示“GBK”“UTF-8-BOM”等,比 Sublime 更可信
- 别信
detect_encoding: true:这个设置会让 Sublime 主动跳过 BOM 去试 GBK,反而把带 BOM 的 UTF-8 文件判成乱码,建议删掉
Reopen with Encoding 和 Save with Encoding 别点反了
这两个菜单项功能完全相反,点错一次就可能把能读的文件“转坏”。
-
Reopen with Encoding:只改当前视图怎么读文件,不改磁盘内容,安全。适合乱码后快速试Chinese (GBK)、UTF-8、GB2312,看到中文就停 -
Save with Encoding:真把当前视图内容按新编码重写到磁盘,不可逆。必须在Reopen with Encoding确认显示正常后才用 - 绝对别点
Convert to UTF-8(老版本菜单里有):它会静默重写文件且不提示,原始编码信息直接丢失
用户配置里 fallback_encoding 为什么不能写 "UTF-8"
fallback_encoding 字段不接受标准编码名,写 "UTF-8" 是无效配置,等于没设。
- 正确写法是:
"fallback_encoding": "Chinese (GBK)"或"Western (ISO 8859-1)",这些是 Sublime 内部注册的编码标识符 -
default_encoding才支持"UTF-8",它管新建文件和显式保存时的默认编码 - 推荐组合:
"default_encoding": "UTF-8"+"fallback_encoding": "Chinese (GBK)",兼顾新建文件和旧项目乱码文件 - 加一行
"save_with_bom": false,否则保存后 Python/Git 会报Non-UTF-8 code starting with '\xef'
插件 ConvertToUTF8 要手动装,别信 Package Control 搜索结果
Package Control 官方仓库早已下架 ConvertToUTF8,现在搜到的大多是过期镜像或恶意 fork。
- 正确做法:去 GitHub 搜
seanliang/ConvertToUTF8(作者原 repo,最后更新于 2020,仍是目前最稳的) - 下载 master 分支 zip,解压后重命名为
ConvertToUTF8文件夹 - Preferences → Browse Packages…,把文件夹拖进打开的目录,重启 Sublime
- 注意:ST4 用户若发现兼容问题,可换用
Codecs36,但优先手动确认编码再决定是否依赖插件
最常被忽略的是:文件可能本身是混合编码,或者带损坏 BOM;即使配置全对,也得先靠 file -i 或 Notepad++ 实锤编码,再操作。猜着改配置,只会让问题更模糊。











