sublime打开文件乱码的根本原因是编码识别错误,而非缺插件;需先通过reopen with encoding选择正确编码(如gbk)使中文正常显示,再用save with encoding→utf-8真正转码保存。

Sublime 打开文件乱码,不是因为没装插件,而是它根本没用对编码去读文件——改默认编码能预防新文件出错,但救不了已乱码的旧文件。必须分清“怎么读”和“怎么存”,否则越调越错。
如何让新建文件默认用 UTF-8
新建文件默认继承系统编码(Windows 下常是 GBK),一输中文、一保存就乱。这由 default_encoding 控制,必须显式设为 "UTF-8":
- 菜单 → Preferences → Settings — User,在右侧 JSON 中加一行:
"default_encoding": "UTF-8" - 注意大小写和短横:
"utf8"、"utf-8"、"UTF8"全错,只认"UTF-8" - 设完不用重启,新建文件(
Ctrl+N)再输入中文,保存后跨平台打开就不会乱
为什么改了 default_encoding 还是打不开老文件
因为老文件没 BOM、没声明编码,Sublime 不会猜,它靠 fallback_encoding 去“硬试”。Windows 上默认是 "Western (Windows 1252)",自然把 GBK 字节当拉丁文解——满屏方块。
- 同样在用户设置里加:
"fallback_encoding": "GBK"(不是"Chinese (GBK)",后者是界面名,配置项只认编码代号) - 若项目混有 UTF-8 和 GBK 文件,设成
"UTF-8"可能让 GBK 文件更乱;设成"GBK"则 UTF-8 无 BOM 文件可能被误判——没有万能值,得看项目实际 - 别开
detect_encoding:设为true反而容易因字节重叠误判,建议显式关掉:"detect_encoding": false
状态栏点“UTF-8”就等于转码了吗
完全不是。右下角显示的编码名(如 UTF-8 或 Western (Windows 1252))仅代表 Sublime 当前“用什么解这个文件”,不改磁盘一字节。
- 已乱码?先 File → Reopen with Encoding → GBK(或
GB2312),确认中文正常显示 - 再 File → Save with Encoding → UTF-8:这才是把内存里已解码的 Unicode,按 UTF-8 规则重新编码写回磁盘
- 跳过第一步直接
Save with Encoding → UTF-8,等于把 GBK 字节当 UTF-8 解一遍再写出去,结果是双重乱码,基本不可逆
ConvertToUTF8 插件现在还能用吗
官方仓库已下架,Package Control 里搜到的多是过期镜像或改名版本(如 CTU8),兼容性差、甚至有安全风险。手动安装原 repo 是目前最稳方式:
- 去 GitHub 搜
seanliang/ConvertToUTF8,下载 master zip,解压重命名为ConvertToUTF8 -
Preferences → Browse Packages…,把文件夹拖进打开的目录,重启 Sublime - 插件只在你打开一个 GBK 文件时才激活;状态栏出现
UTF-8 (ConvertToUTF8)表示生效 - 它不做自动批量转码,也不改文件原始字节——只是帮你省掉手动
Reopen with Encoding那步
真正麻烦的从来不是操作步骤,而是你得先知道那个乱码文件本来就是 GBK 还是 UTF-8。BOM 不存在时,Sublime 不会告诉你答案,只能靠 file -i(Linux/macOS)或 Notepad++ 的编码检测辅助判断——这点没人能绕过去。











