sublime text 新建和保存强制 utf-8 需设 default_encoding_on_save 为 "utf-8",default_encoding 已弃用,仅影响状态栏显示;st4 中 fallback_encoding 被移除,gbk 文件需先“reopen with encoding”再“save with encoding”。

Sublime Text 不能靠改 default_encoding 就让新建和保存都变成 UTF-8 —— 它在 ST4 中已彻底弃用,只影响右下角显示和“另存为”对话框的默认选项,不控制任何实际读写行为。
为什么改了 default_encoding 还是乱码?
因为 Sublime Text 原生根本不拿它做保存或打开依据。你看到状态栏写着“UTF-8”,不代表文件磁盘字节就是 UTF-8;空文件保存后甚至没有字节可谈。真正起作用的是两个独立配置项:default_encoding_on_save(控制 Ctrl+S 写什么编码)和 fallback_encoding(控制无 BOM 文件怎么读)。
-
default_encoding_on_save必须设为"UTF-8"(注意大小写、短横,不能是utf8或UTF-8+BOM)才能强制静默转码保存 -
fallback_encoding在 ST4 中已被移除,但 ST3 仍支持;若你用的是 ST3,设为"GBK"可避免 Windows 下中文 .txt 一打开就满屏方块 - 网上流传的
"convert_to_utf8_on_save": true是 ConvertToUTF8 插件私有字段,Sublime 原生完全忽略
default_encoding_on_save 怎么配才生效?
这个字段是 ST4 中唯一能覆盖保存行为的开关。它不改变打开逻辑,也不影响显示,只管“落盘那一刻”:
- 必须写在
Preferences → Settings – User的 JSON 中,且值严格为"UTF-8" - 如果文件原本是 GBK,你编辑后按 Ctrl+S,Sublime 会把内存里的 Unicode 字符串重新编码为 UTF-8 字节写入磁盘 —— 相当于自动转码
- 不要同时设
save_encoding或convert_to_utf8_on_save,它们不是原生字段,加了也白加 - 想带 BOM?得设
"UTF-8 with BOM";其他写法如"UTF8-BOM"会静默失效
旧 GBK 文件一打开就乱码,怎么办?
这不是设置错了,是 Sublime 拿错了规则去解码。ST4 内置 fallback 列表不可配,默认按 Windows-1252 或系统 locale 解无 BOM 文件,两个 GBK 字节被当做一个 UTF-8 字符读,必然崩坏。
- 正确做法:菜单栏 File → Reopen with Encoding → Chinese (GBK),先让内容正常显示
- 确认无误后,再执行 File → Save with Encoding → UTF-8,这才真正把 GBK 字节转成 UTF-8 字节写回磁盘
- 点右下角状态栏的编码名(比如点一下 “UTF-8”)只是重解析当前内存内容,不改磁盘字节,也不转码
- 频繁处理这类文件?建议装 ConvertToUTF8 插件,但它默认保存仍回原编码,需进插件配置关掉
save_to_original_encoding
最易被忽略的一点:default_encoding_on_save 和 fallback_encoding 必须配对使用,且不能和已弃用的 default_encoding 共存;否则优先级混乱,实际生效的可能是你没意识到的那个值。ST4 用户尤其要注意:fallback_encoding 已不存在,别白费劲去配它。











