sublime text乱码主因是fallback_encoding解码错误,default_encoding在st4中已弃用;应手动reopen with encoding选gbk再convert to utf-8保存,且设default_encoding_on_save为utf-8控制实际保存编码。

Sublime Text 乱码不是“编码设错了”,而是打开时解码错了——必须同时管住 fallback_encoding 和文件保存行为,否则改了 default_encoding 也没用。
为什么改了 default_encoding 还是乱码
因为 default_encoding 在 Sublime Text 4 中已被官方标记为“已弃用”,它只影响新建文件的显示标识和另存为对话框的默认选项,不控制实际打开或保存逻辑。你双击一个旧的 .txt 文件看到满屏方块,根本原因不是新建文件没设对,而是 Sublime 拿 fallback_encoding 去解析了一个实际是 GBK 的文件,两个字节被当做一个 UTF-8 字符读,必然崩坏。
-
fallback_encoding才是打开无 BOM 文件时的“保底解码方案”:Windows 下默认 fallback 到Western (Windows 1252)或系统 locale(即 GBK),极易误判 - 设成
"UTF-8"能避免误判,但会把真实 GBK 文件也强行按 UTF-8 解,照样乱码;设成"GBK"又会让 UTF-8 文件出问题 - 真正稳妥的做法是:先手动
Reopen with Encoding → Chinese (GBK)让内容正常,再Save with Encoding → UTF-8完成真实转码
怎么让新建和保存都走 UTF-8
靠 default_encoding_on_save,不是 default_encoding。这个配置项才真正决定 Ctrl+S 时以什么编码落盘。
- 在
Preferences → Settings右侧用户设置中添加:"default_encoding_on_save": "UTF-8" - 如果需要带 BOM(极少数 Windows 工具强制要求),写成:
"default_encoding_on_save": "UTF-8 with BOM";注意不能写"UTF8-BOM"或"utf-8",大小写和短横必须严格匹配 - 不要加
save_with_encoding或save_encoding—— 这些不是 Sublime 原生命令,部分插件或旧教程里出现,但会导致配置无效甚至报错 - 状态栏点击 “UTF-8” 只是重解析内存内容,不改磁盘字节,也不做任何转换;点多了反而容易混淆当前真实编码
打开就乱码的文件怎么救
别急着改设置,先看右下角状态栏显示的是什么编码(比如 Western (Windows 1252)、GBK 或空白)。这代表 Sublime 当前用什么编码在解码这个文件。
- 如果显示为空或明显不对,点击它 → 选
Reopen with Encoding → Chinese (GBK)(常见于 Windows 记事本存的中文文件) - 内容恢复正常后,再点击状态栏 → 选
Convert to UTF-8(不是Save with Encoding),此时编辑器会在内存中完成解码+重编码,但还没写入磁盘 - 必须按
Ctrl+S保存,才会把 UTF-8 字节真正写入文件;不保存,关掉就白忙 - 对批量处理旧项目,可装
ConvertToUTF8插件,但它默认仍按原编码保存,需进插件配置关掉save_to_original_encoding
最易被忽略的一点:Sublime 不会自动帮你“识别并转码”,它只负责按你指定的方式读和写。所谓“自动检测”其实是试探性解码,失败后就退到 fallback_encoding。所以与其赌检测准不准,不如明确告诉它——这个文件该用什么解、该用什么存。











