Sublime Text 不支持真正批量转换文件编码,所有操作均为逐文件处理;其编码逻辑是“按需解码→编辑→指定编码保存”,未打开文件无法读取或转码;推荐用 ConvertToUTF8 插件处理单文件乱码,批量转码须借助 iconv 等命令行工具。

Sublime Text 本身不提供“批量转换多个文件编码格式”的内置功能,所有声称“一键批量转 UTF-8”的操作,本质都是靠手动触发或插件辅助的逐文件处理——没有真正的后台批量编码转换。
为什么 Sublime 无法真正批量修改文件编码
Sublime Text 的编码处理逻辑是「按需解码 → 编辑 → 按指定编码保存」。它不会在不打开文件的情况下读取、解码、重编码并写回磁盘。即使使用插件,也必须逐个加载文件内容,否则无法保证正确识别源编码(比如 GBK 和 UTF-8 混用时容易误判)。
-
File → Reopen with Encoding只影响当前视图解码方式,不改变文件实际字节 -
File → Save with Encoding → UTF-8仅对已打开且内容被正确解码的文件生效 - 未打开的文件,Sublime 完全不可见其内容,更无法安全转码
推荐方案:用插件 ConvertToUTF8 处理常见乱码场景
该插件专为自动检测并转码非 UTF-8 文件设计,适合中文环境下的日常编辑(如 GBK/GB2312 文件打开后显示乱码)。但它仍属「单文件实时响应」,不是批处理工具。
- 安装后,打开一个 GBK 编码的文件,若内容显示为乱码,插件会自动尝试以 GBK 解码并转为 UTF-8 内存表示
- 保存时默认使用
UTF-8编码写入磁盘(需确认状态栏显示UTF-8) - 不支持自定义源编码列表,对 ISO-8859-1 或 Shift-JIS 等需额外配置
fallback_encoding - 插件配置中
convert_on_save设为true后,每次保存都会强制转成 UTF-8(慎用,可能覆盖原编码意图)
真正批量转码必须借助命令行工具
若你有一批 .txt 或 .py 文件需要统一转为 UTF-8,应离开 Sublime,使用系统级工具。Windows 推荐 iconv(通过 MSYS2 或 WSL),macOS/Linux 直接可用。
例如,在终端中批量将当前目录下所有 .txt 文件从 GBK 转为 UTF-8:
for file in *.txt; do iconv -f GBK -t UTF-8 "$file" -o "utf8_$file"; done
-
iconv无法自动识别源编码,必须明确指定-f GBK;误设会导致输出乱码 - Windows 原生命令
chcp和type不支持编码转换,不能替代iconv - Python 脚本也可实现,但要注意
open(..., encoding=...)在读取错误编码时会抛UnicodeDecodeError,需加errors='replace'或先用chardet检测
Sublime 中最容易被忽略的细节
很多人以为状态栏显示 UTF-8 就代表文件已是 UTF-8 编码,其实只是 Sublime 当前用 UTF-8 解码了内容。如果原始文件是 GBK,而你没执行 Save with Encoding → UTF-8,那么下次用其他编辑器打开仍是乱码。
- 务必检查保存动作是否真的触发了重编码:状态栏编码名右侧应出现
•(表示已修改),再执行Save with Encoding - Sublime 默认保存不带 BOM;若目标环境(如旧版 Windows 记事本)要求 BOM,需选
UTF-8 with BOM - 项目中混用编码时,建议在
Preferences → Settings – Syntax Specific里为.py文件强制设置"default_encoding": "UTF-8",避免新建文件继承系统默认编码










