sublime text中文乱码根本原因是编码错配,须先用file -i或notepad++确认文件真实编码(如gbk/utf-8),再通过reopen with encoding正确解码,最后save with encoding→utf-8转存;配置应设"default_encoding": "utf-8"、"fallback_encoding": "chinese (gbk)"并禁用detect_encoding。

Sublime Text 中文乱码不是文件损坏,也不是字体缺失,而是它用错了编码规则去解析字节流——比如拿 UTF-8 解码器去读一个 GBK 文件,结果必然满屏方块或“锟斤拷”。解决的关键从来不是装一堆插件,而是先确认真实编码,再匹配解码方式。
怎么确认文件真实编码,而不是瞎猜
Sublime 右下角显示的 “UTF-8” 只是当前解码方式,不是文件真实编码。它正在错读,你才看到乱码。
- Linux/macOS 下运行
file -i 文件名,看输出里的charset=字段(如charset=gbk或charset=utf-8) - 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 搜作者原 repo(最后更新于 2020,仍是目前最稳的),下载 master 分支 zip
- 解压后重命名为文件夹,打开
Preferences → Browse Packages…,把文件夹拖进打开的目录,重启 Sublime - ST4 用户若发现兼容问题,可换用
GBK Encoding Support,但优先手动确认编码再决定是否依赖插件
真正麻烦的是混合编码项目——同一目录下既有 UTF-8 无 BOM 的新脚本,又有 GBK 的旧配置。这时候全局设置会失效,必须靠右下角手动切换,或者用项目专属 .sublime-project 配置绑定编码规则。这点容易被忽略,等 Git 提交失败才反应过来。











