Sublime Text 不支持为 Python、HTML 等语法单独设置默认编码,所有文件共用全局编码策略:打开依赖已失效的 fallback_encoding(ST4 彻底移除),保存由 default_encoding_on_save 严格控制为 "UTF-8",新建文件编码由弃用的 default_encoding 影响;所谓“按语法设编码”是伪需求,乱码根源在于文件原始字节编码而非后缀,唯一可靠操作是手动 Reopen with Encoding → Chinese (GBK) 后 Save with Encoding → UTF-8。

Sublime Text 里不能为某种语法(如 Python、HTML)单独设默认编码
Sublime Text 没有 python_default_encoding 或 html_fallback_encoding 这类配置项。所有文件——无论后缀是 .py、.html 还是 .txt——都共用同一套编码策略:打开靠全局 fallback_encoding(ST4 已失效),保存靠 default_encoding_on_save,新建靠 default_encoding(已弃用)。所谓“特定语法的默认编码”,本质上是个伪需求。
为什么有人觉得需要“按语法设编码”?
常见错觉来源:
- 打开一个
.js文件乱码,但.py正常 → 其实是该.js文件本身是 GBK 编码,而.py是 UTF-8;和语法无关,只和文件原始字节有关 - 在 HTML 文件里写中文不乱,但复制进 JS 块就崩 → 是因为 HTML 文件带 BOM 或被正确识别为 UTF-8,JS 文件没 BOM 又无提示,Sublime 按 Western (Windows 1252) 解码了两个字节,不是语法导致的
- 装了插件(如
ConvertToUTF8)后,对.html自动转码,但对.md不生效 → 插件自己写的规则,不是 Sublime 原生能力
真正能影响单个文件行为的操作,只有手动重载 + 保存
如果你频繁处理某类文件(比如大量 GBK 编码的旧 .htm),唯一可靠路径是:
- 右下角点击当前显示的编码名(常为
Western (Windows 1252)或空白) - 选
Reopen with Encoding → Chinese (GBK)(注意括号内是界面显示名,不是配置值) - 确认中文正常显示后,立刻执行
Save with Encoding → UTF-8 - 此后只要配了正确的
default_encoding_on_save,再按Ctrl+S就会持续以 UTF-8 保存
这个流程不依赖文件类型,也不读取语法定义,它只作用于当前视图的内存内容和磁盘字节。
想“自动化”处理某类后缀?只能靠插件或外部脚本
原生 Sublime 不支持按后缀绑定编码逻辑。可行替代方案:
- 装
ConvertToUTF8插件,并在它的用户配置中启用"convert_on_open": true和"convert_on_save": true,但它对后缀的支持靠白名单硬编码(如默认含.html、.htm,不含.vue) - 用
Project.sublime-project配置settings块加"default_encoding_on_save": "UTF-8"——但这仍是全局级,不是按语法 - 写 Python 构建系统或外部脚本(如用
iconv批量转码*.htm),再配合 Sublime 的build命令调用
别在 Preferences → Settings – Syntax Specific 里尝试加编码相关字段,它们会被忽略——Sublime 只认 default_encoding_on_save 这一个保存控制项,且它只存在于全局用户设置中。


















