关键在 fallback_encoding:它才是打开无bom中文文件时的兜底解码器,必须设为utf-8;default_encoding仅影响新建文件,对已存文件无效。

为什么改了 default_encoding 还是乱码?关键在 fallback_encoding
Sublime Text 新建文件确实默认用 UTF-8,但打开一个没 BOM 的中文 .txt 或 .py 文件时,它根本不会“猜”你是 UTF-8——而是按 fallback_encoding 去硬解。Windows 下默认是 Western (Windows 1252),结果就是满屏 或方块。
-
default_encoding只管新建文件,对已存文件无效 -
fallback_encoding才是打开未知编码文件时的“兜底解码器”,必须设为UTF-8(注意大小写,utf-8也行,但UTF-8 with BOM是非法值) - ST4 已弱化
fallback_encoding作用,但设它仍是最简单、最可靠的防乱码手段;不设,等于把解码权交给系统 locale
已打开乱码的文件怎么救?别点“Save with Encoding”就完事
文件已经显示一堆问号或方块,说明 Sublime 当前正用错编码读取字节。此时直接 Save with Encoding → UTF-8 不会修复内容——它只是把错误解码后的乱码,再用 UTF-8 编码存一遍,彻底毁掉原始中文。
- 先做
File → Reopen with Encoding → UTF-8(或快捷键Ctrl+Shift+P输入Reopen with Encoding: UTF-8) - 确认中文正常显示后,再执行
File → Save with Encoding → UTF-8 - 如果原文件是 GBK 编码,而你不确定,可先试
Reopen with Encoding → Chinese (GBK)看是否恢复,再转存 UTF-8
想一劳永逸处理 GBK 文件?别信“自动转存 UTF-8”的配置
网上很多教程让你在用户设置里加 "convert_to_utf8_on_save": true,这行根本没用——Sublime 原生不识别这个字段,它是老版插件 ConvertToUTF8 的私有配置,新版已失效。
- 真正有效的插件是
ConvertToUTF8(通过 Package Control 安装),它能自动识别 GBK 并以 UTF-8 显示,但默认保存仍回 GBK - 如需统一存 UTF-8,得进插件配置关掉
save_to_original_encoding,并确保convert_to_utf8_on_save设为true(仅对该插件生效) - 注意:该插件与 Sublime Text 4 兼容性不稳定,若频繁崩溃,建议退回手动流程:先
Reopen with Encoding,再Save with Encoding
新建文件要带 BOM?Sublime 不支持直接设为默认
Sublime 默认新建文件是 UTF-8 无 BOM。你想让它默认带 BOM,不能靠 default_encoding 实现,因为 UTF-8 with BOM 不是合法配置值,强行写入会导致设置加载失败。
- 临时需要带 BOM:新建文件后,点右下角编码名 →
Save with Encoding → UTF-8 with BOM - 想一键切换:可绑定快捷键,例如在
Preferences → Key Bindings中加一条:{"keys": ["ctrl+alt+u"], "command": "set_encoding", "args": {"encoding": "UTF-8 with BOM"}} - 但强烈建议避免 BOM:Git、Python 解释器、多数构建工具都反感 BOM,容易引发隐晦错误
fallback_encoding 不设,default_encoding 就形同虚设;已乱码文件不先 Reopen with Encoding,直接 Save with Encoding 就是二次破坏。











