st4已移除fallback_encoding,打开无bom的gbk文件会乱码;唯一解决方式是手动reopen with encoding→chinese (gbk),再save with encoding→utf-8;仅default_encoding_on_save控制保存编码,必须严格设为"utf-8"。

ST4 中 fallback_encoding 已失效,别再配它了
Sublime Text 4 彻底移除了 fallback_encoding 配置项,你在用户设置里写 "fallback_encoding": "GBK" 或 "UTF-8",Sublime 会直接忽略——既不报错,也不生效。打开无 BOM 的 GBK 文件时,它按硬编码顺序尝试解码:UTF-8 → UTF-16 → Western (Windows 1252) → …… GBK 不在其中,所以大概率显示为方块或乱码。
这不是你配置漏了,是 ST4 主动砍掉了这个能力。试图靠改配置让“一打开就正常”在 ST4 里根本不可行。
打开乱码文件必须手动 Reopen with Encoding
遇到双击打开就乱码的 .txt / .html / .js 文件(尤其是 Windows 记事本生成的老文件),唯一可靠路径是:
- 右下角点击当前显示的编码名(常为
Western (Windows 1252)或空白) - 选
Reopen with Encoding→Chinese (GBK)(注意:括号内是界面显示名,不是配置值) - 确认中文显示正常后,立刻执行
Save with Encoding→UTF-8(不是UTF-8 with BOM)
这一步把文件真正转成 UTF-8 落盘。此后再编辑、按 Ctrl+S,只要配了 default_encoding_on_save,就会持续以 UTF-8 保存。
default_encoding_on_save 才管保存,拼写必须严格
真正控制 Ctrl+S 写入什么编码的,只有 default_encoding_on_save。设成 "UTF-8" 后,无论原文件是 GBK、BIG5 还是无 BOM 的 UTF-8,保存时都会把内存里的 Unicode 重新编码为 UTF-8(无 BOM)字节写入磁盘。
以下写法全部无效:
-
"utf-8"(小写) -
"UTF8"(缺短横) -
"UTF-8 with BOM"(超长且非标准) -
"UTF-8+BOM"(非法符号)
只接受且仅接受 "UTF-8" —— 大小写、短横、引号,一个字符都不能错。
别混用 default_encoding,它现在纯属干扰项
default_encoding 在 ST4 中已被官方标记为 “deprecated”,它只影响两件事:
- 新建空文件时右下角显示的编码标识(比如显示
UTF-8) - “Save with Encoding” 对话框默认选中的项
它完全不决定实际保存行为,也不影响打开逻辑。更关键的是:如果和 default_encoding_on_save 共存,前者可能引发误判(例如新建文件显示 UTF-8,但输入中文后 Ctrl+S 仍落盘为 GBK)。建议用户设置里彻底删掉这一项。
真正要盯住的,只有 default_encoding_on_save 是否存在、是否拼写正确、是否设为 "UTF-8" —— 其他都是障眼法。











