Sublime Text 保存文件时默认沿用原编码,需在Settings–User中设置"default_encoding":"UTF-8"和"fallback_encoding":"UTF-8",打开GBK文件后须点击状态栏编码名选择“Convert to UTF-8”并保存。

Sublime Text 保存文件时自动用 UTF-8 编码
Sublime Text 默认不会强制用 UTF-8 保存文件,尤其在打开非 UTF-8 编码(比如 GBK)的文件后,再保存会沿用原编码——这是中文用户最常踩的坑。想让它“新建/保存一律 UTF-8”,关键不是改显示编码,而是控制 default_encoding 和 fallback_encoding 的行为。
实操建议:
- 打开
Preferences → Settings – User,确保配置里有这两项:{ "default_encoding": "UTF-8", "fallback_encoding": "UTF-8" } -
default_encoding控制新建文件和未声明编码的文件的保存编码;fallback_encoding是当 Sublime 无法识别文件原始编码时的兜底方案(比如乱码文件),设成UTF-8能避免它误判为Western (Windows 1252) - 别碰
detect_encoding:设为true反而会让 Sublime 尝试猜编码,导致保存时“悄悄换回 GBK”
打开 GBK 文件后仍强制以 UTF-8 保存
很多人发现:明明设置了默认 UTF-8,但一打开一个旧的 .txt 或 .html(GBK 编码),编辑完 Ctrl+S,文件还是 GBK —— 因为 Sublime 记住了该文件的原始编码,并优先服从它。
实操建议:
- 打开文件后,看窗口右下角状态栏显示的编码名(如
GBK、UTF-8 with BOM),点击它 → 选Convert to UTF-8(不是Reopen with Encoding) - 转换后务必手动保存(Ctrl+S),否则只是内存里转了,磁盘文件没变
- 如果频繁处理 GBK 源文件,可装插件
ConvertToUTF8,它会在检测到非 UTF-8 编码时自动转换并保存,但注意:它不修改原文件编码逻辑,只干预保存前的转换动作
为什么改了设置还是保存出错?检查这些地方
常见错误现象:UnicodeEncodeError: 'charmap' codec can't encode character(Windows 下命令行调用 Sublime 保存后报错)、或 Python 脚本读取时报 UnicodeDecodeError——本质是文件实际编码和代码预期不一致。
实操建议:
- 确认文件是否带 BOM:
UTF-8 with BOM和UTF-8在 Sublime 里是两个不同选项,Python 读UTF-8 with BOM通常没问题,但某些工具(如部分 Makefile、shell 脚本)会把 BOM 当垃圾字符;建议统一用无 BOM 的UTF-8 - 检查
Settings – User有没有被插件覆盖:比如EditorConfig插件会读项目根目录下的.editorconfig,其中charset=utf-8才生效,否则它可能忽略你的全局设置 - Windows 用户特别注意:系统区域设置为“中文(简体,中国)”时,CMD/PowerShell 默认用
GBK解释输出,跟 Sublime 无关,但容易误判为“Sublime 没保存对”
Sublime 的编码行为和编辑器本身无关,和你操作路径强相关
它不区分“新建文件”“从磁盘打开”“从剪贴板粘贴创建”,所有行为都依赖当前 buffer 的 encoding 属性。这个属性由打开方式决定:双击打开 → 继承文件原编码;Ctrl+N 新建 → 用 default_encoding;拖入文件 → 同双击。
所以没有“一劳永逸”的开关,只有明确每一步的编码归属。最容易被忽略的是:你关掉一个 GBK 文件再重开,Sublime 仍会记住它的编码偏好,除非你手动执行一次 Convert to UTF-8 并保存。










