sublime text 新建文件默认标识 utf-8 但未写入字节;真正控制保存编码的是 default_encoding_on_save,fallback_encoding 用于无bom文件的误判兜底,状态栏点击仅重解析内存不改磁盘。

新建文件默认是 UTF-8,但不等于“已写入 UTF-8 字节”
Sublime Text 新建空白文件时右下角显示 UTF-8,这只是编辑器当前的解码标识,不是文件已带 BOM 或已按 UTF-8 写入磁盘。空文件保存时不会生成任何字节,自然也不存在“编码生效”一说。
-
default_encoding在官方文档中已被标记为“已弃用”,它只在极少数上下文(如另存为对话框初始选项)起微弱作用,不能真正控制新建文件行为 - 真正影响保存动作的是
default_encoding_on_save:设为"UTF-8"后,按 Ctrl+S 会默认以 UTF-8 编码写入内容 - 若需带 BOM,必须设
"default_encoding_on_save": "UTF-8 with BOM";但注意 Sublime 不识别"UTF-8 with BOM"以外的变体写法(比如"UTF8-BOM"会静默失效)
打开旧中文文件乱码?不是设置错了,是 fallback 解码逻辑没对上
你在 Windows 上双击一个记事本存的 README.txt,满屏方块,这不是因为你没改 default_encoding,而是 Sublime 拿 fallback_encoding 去解析了一个实际是 GBK 的文件——两个字节被当做一个 UTF-8 字符读,必然崩坏。
-
fallback_encoding是“无 BOM + 自动检测失败”后的保底方案,Windows 下默认 fallback 到Western (Windows 1252)或系统 locale(即 GBK),极易误判 - 正确做法是:先 菜单栏 → File → Reopen with Encoding → Chinese (GBK),让内容正常显示;确认无误后再 Save with Encoding → UTF-8,这才完成真实转码
- 状态栏点击
UTF-8只是重解析内存内容,不改磁盘字节,也不做任何转换——越点越乱是常态
想自动处理 GBK 文件?ConvertToUTF8 插件能帮上忙,但有边界
ConvertToUTF8 是目前最实用的中文编码兼容插件,但它不是万能转换器,更不是批量重写工具。
- 它能在打开 GBK 文件时自动识别并以 UTF-8 方式显示(避免手动
Reopen with Encoding) - 但它默认保存仍回原编码(即 GBK),如需统一存为 UTF-8,必须进插件配置关掉
save_to_original_encoding - 它不支持反向操作:不能把 UTF-8 文件一键转成 GBK;也不提供“全项目批量转码”功能
- Sublime Text 4 用户需注意:部分版本存在兼容问题,若安装后无反应,可尝试改用原生流程 + 手动切换
配置必须是合法 JSON,且只写在用户设置里
Preferences → Settings 打开的是左右双栏,左侧是只读默认设置,右侧才是你该改的 Preferences.sublime-settings(用户设置)。这里写错一个逗号或漏一个引号,整段配置就失效。
- 必须用双引号包裹键名和字符串值:
"default_encoding_on_save": "UTF-8"✔️,default_encoding_on_save: 'UTF-8'❌ - 末尾不能有多余逗号,否则 Sublime 会静默忽略整个用户设置文件
- 推荐最小有效配置组合:
"default_encoding_on_save": "UTF-8"+"fallback_encoding": "GBK"(兼顾新建与旧文件)或"fallback_encoding": "UTF-8"(强推 UTF-8 统一,但需配合人工纠正误判)
最容易被忽略的一点:Sublime 的编码行为是「基于文件内容」而非「基于设置」的。哪怕你把所有配置都设成 UTF-8,只要打开一个没 BOM 的 GBK 文件,它依然会显示乱码——这时候得人工干预,而不是调设置。











