确认文件真实编码需先查实锤:linux/macos用file -i看charset字段,windows用notepad++右下角显示;sublime右下角仅显示当前解码方式,非真实编码。

怎么确认文件真实编码,而不是瞎猜
Sublime 不会自动告诉你文件是 UTF-8 还是 GBK,它只按规则“猜”,而中文编码的字节重叠太多,一猜就错。所以第一步永远不是改设置,而是查实锤。
- Linux/macOS 下用
file -i 文件名,看输出里的charset=字段(比如charset=utf-8或charset=gbk) - Windows 用户推荐用 Notepad++:打开文件 → 右下角直接显示编码(如“GBK”“UTF-8-BOM”),比 Sublime 自带状态栏更可靠
- 别信右下角显示的“UTF-8”——那只是 Sublime 当前解码方式,不等于文件真实编码;它可能正用 UTF-8 解一个 GBK 文件,满屏方块就是证据
Reopen with Encoding 和 Save with Encoding 别搞混
这是最常被点错的两个菜单项,功能完全相反,点错一次就可能把能读的文件“转坏”。
-
Reopen with Encoding:只改当前视图怎么读文件,不改文件内容,安全。适合乱码后立刻试 GBK、UTF-8、GB2312 等,看到中文就停 -
Save with Encoding:真把文件按新编码重写磁盘,不可逆。必须在Reopen with Encoding确认显示正常后才用,否则乱码内容会被固化成新编码 - 千万别点
Convert to UTF-8(老版本菜单里有)——它会静默重写文件,且不提示,容易覆盖原始编码信息
用户设置里 fallback_encoding 为什么不能写 "UTF-8"
因为 Sublime 的 fallback_encoding 字段不接受标准编码名,它只认自己内置的编码标识符。写 "UTF-8" 是无效配置,等于没设。
- 正确写法是:
"fallback_encoding": "Chinese (GBK)"或"Western (ISO 8859-1)",这些是 Sublime 内部注册的名称 -
default_encoding才支持"UTF-8",它管新建文件和显式保存时的默认编码 - 两者得配着用:
"default_encoding": "UTF-8"+"fallback_encoding": "Chinese (GBK)",才能兼顾新建文件和旧项目乱码文件 - 顺手删掉配置里可能存在的
"detect_encoding": true——这个开关会让 Sublime 主动跳过 UTF-8 去试 GBK,反而把带 BOM 的 UTF-8 文件判成乱码
保存后其他工具报错 Non-UTF-8 code starting with '\xef'
这不是 Sublime 没设对,而是它悄悄加了 UTF-8 BOM(\xef\xbb\xbf),Python、Git、Shell 脚本都把它当非法字符。
- 检查是否生效:保存后运行
xxd 文件名 | head -n1,输出不含ef bb bf才算干净 - 必须加这行配置:
"save_with_bom": false,只靠"default_encoding": "UTF-8"不够 - Windows 记事本存的“UTF-8”默认带 BOM,用它生成的文件第一次在 Sublime 里打开可能显示正常,但一旦你点了保存,就会“传染”BOM 给整个项目
- 如果已有 BOM 文件,用
Reopen with Encoding → UTF-8打开,再Save with Encoding → UTF-8(注意不是“UTF-8 with BOM”)即可剥离











