Sublime Text 打开中文文件乱码需先确认真实编码而非依赖默认设置;Linux/macOS用file -i、Windows用Notepad++查看,ST4已移除fallback_encoding,须装ConvertToUTF8插件并配置default_encoding为UTF-8、save_with_bom为false。

Sublime Text 打开中文文件乱码,不是改个 default_encoding 就能解决的——它根本不管文件真实编码,只按配置“猜”。你得先搞清文件本来是啥编码,再决定怎么设、设什么。
怎么确认文件真实编码,而不是瞎试
Sublime 右下角显示的 UTF-8 或 Western (Windows 1252) 是它当前怎么解码的,不是文件真实编码。满屏方块时它可能正用 UTF-8 解一个 GBK 文件。
- Linux/macOS 下运行
file -i 文件名,看输出里的charset=字段(如charset=gbk) - Windows 用户用 Notepad++ 打开,右下角直接显示真实编码(如
GBK、UTF-8-BOM),比 Sublime 更准 - 别信
Reopen with Encoding → UTF-8试出来能显示就以为是 UTF-8——可能是巧合,也可能是 BOM 撑住了,一关再开又乱
Sublime Text 4 用户:fallback_encoding 已失效,别白配
ST4 彻底移除了 fallback_encoding 配置项,写进去也不生效。它现在靠三步判断打开方式:是否有 BOM → 是否匹配内置检测规则(和缩进无关)→ 最后才走硬编码兜底列表(不可配置)。
- 如果你用的是 ST4,删掉用户设置里所有
"fallback_encoding": ...行,留着反而误导自己 - 想让旧 GBK 文件双击就正常?必须装插件:
ConvertToUTF8(推荐)或Codecs37 - 插件装好后,状态栏会显示真实检测到的编码(如
GBK),点击就能切换解码,按Ctrl+S会自动以 UTF-8 保存,不破坏原内容
default_encoding 和 save_with_bom 必须配齐
default_encoding 控制新建文件和 Save with Encoding 的默认选项,但它不决定“打开”行为;而很多人忽略的 save_with_bom,才是 Python/Git/Shell 报错的元凶。
- 在
Preferences → Settings — User中加这两行:
{
"default_encoding": "UTF-8",
"save_with_bom": false
}
save_with_bom 默认是 true,一保存就悄悄加 \xef\xbb\xbf,Python 脚本开头报 Non-UTF-8 code starting with '\xef' 就是它xxd 文件名 | head -n1,输出不含 ef bb bf 才算干净最麻烦的永远不是配置,而是项目里混着 UTF-8-BOM、GBK、ANSI 的文件——没有银弹,得一个个查实锤、手动重开、再转存。别指望一次设置覆盖所有场景。

















