sublime text 中 show_encoding 设置需写为 {"show_encoding": true} 并置于 preferences → settings – user 中,仅对新打开视图生效;已打开文件需手动点击状态栏编码区触发重绘,且须确保状态栏已启用。

show_encoding 设置不生效?检查配置项名和作用域
Sublime Text 2026 年主流版本只认 show_encoding,不是 show_encoding_on_status_bar 或 show_encoding_on_statusbar。后者是旧版残留字段,写了也无效。
必须加在 Preferences → Settings – User 的右侧用户配置中,格式为 JSON 对象字段:
{
"show_encoding": true
}
注意:该设置仅对新打开的视图生效;已打开的文件不会自动刷新状态栏,需手动点击状态栏编码区(哪怕为空)→ 选 Set Encoding → 再点回原编码,触发重绘。
- 如果改了配置仍不显示,先确认菜单 View → Show Status Bar 已勾选(状态栏本身被隐藏会导致所有内容消失)
- 新建未保存的空文件、二进制文件或 Git 暂存区临时缓冲区,状态栏会显示
Undefined或空白,这不是配置问题,是 Sublime 真的无法推断 - 插件如
ConvertToUTF8或EncodingHelper会劫持编码逻辑,冲突时优先禁用它们测试原生行为
状态栏显示 “Western (Windows 1252)” 就一定是乱码?
不是。它只说明 Sublime 当前正用 Western (Windows 1252)(即 cp1252)解码文件字节——这常发生在无 BOM 的纯 ASCII 文件 + 中文混入场景下,属于启发式检测失败,而非文件损坏。
真正要判断是否乱码,得看内容:中文显示为方块、问号或错字,才是误判;若全是英文数字且排版正常,Western (Windows 1252) 可能就是正确解码方式。
- 别信状态栏文字就直接编辑:点它只是让 Sublime 用该编码重读一遍,不改磁盘字节
- 想验证真实编码?用
Reopen with Encoding(Ctrl+Shift+P 输入)挨个试GBK、UTF-8、UTF-8 with BOM,哪个中文正常,哪个就是原始编码 - 如果列表里没有
GBK,在用户配置加"fallback_encoding": "GBK",重启后就会出现
想自定义状态栏显示“编码: UTF-8 | 行数: 42”?用 StatusMessage 插件
原生 Sublime 不支持格式化字符串拼接,show_encoding 只控制“是否显示”,不能改样式或加前缀。要实现带标签的复合显示,必须装插件。
StatusMessage 是目前最轻量、维护活跃的选择。安装后,在 Preferences → Package Settings → StatusMessage → Settings 里写:
{
"format": "编码: {encoding} | 换行: {line_ending} | 类型: {syntax} | 行数: {line_count}"
}
其中 {encoding} 是动态变量,会实时替换为当前视图识别出的编码名(如 UTF-8 或 GBK)。
- 变量名必须严格匹配文档,比如
{file_size}有效,但{size}或{filesize}都不会渲染 - 如果状态栏没变化,检查控制台(View → Show Console)是否有插件加载报错,常见原因是 Python 版本不兼容或插件未启用
- 想加文件大小?用
{file_size_bytes}(单位字节)或{file_size}(带 KB/MB 自动换算)
为什么 Save with Encoding 后状态栏还是旧编码?
因为 Save with Encoding 只改磁盘文件字节,不强制刷新当前视图的解码逻辑。你保存成 UTF-8,但 Sublime 还在用原来的 GBK 解码缓存,状态栏自然还显示 GBK。
正确流程是两步闭环:
- 先
Reopen with Encoding→GBK(看清原文) - 再
Save with Encoding→UTF-8(把 GBK 字节转成 UTF-8 字节写入磁盘)
此时文件已更新,但视图仍按 GBK 解码,所以你会看到“刚保存完又变乱码”。必须再执行一次 Reopen with Encoding → UTF-8,才能让状态栏同步更新为 UTF-8 并正常显示。
- 跳过第二步直接
Save As改后缀再选编码?无效。这只会创建新文件,原视图解码方式不变,状态栏也不会更新 - 频繁切换编码的项目,建议在用户配置加
"default_encoding": "UTF-8"和"fallback_encoding": "GBK",减少手动干预











