sublime text无原生批量转码功能,需依赖插件或命令行工具;converttoutf8仅处理当前文件,不支持批量;真正批量转码须用file encoding user插件配合iconv等外部工具,并手动确认源编码。

Sublime Text 本身不提供原生的批量文件编码转换功能,所有“批量转码”操作都依赖插件或外部工具配合,且必须手动确认每个文件的源编码——自动识别不可靠,强行转码极易损坏文件。
用 ConvertToUTF8 插件只能转当前文件,不是批量
很多人装了 ConvertToUTF8 就以为能批量处理,其实它只作用于当前打开的标签页:Ctrl+Shift+P → 输入 Convert to UTF-8 后,仅对当前文件做一次性重编码并保存。它不扫描目录、不遍历文件、不记忆原始编码。
- 适合临时救急单个乱码文件,比如从 GBK 网页复制粘贴后内容错乱
- 若原始编码不是 UTF-8,它默认按系统 locale 解码再转 UTF-8,Windows 上常误判为
cp936,Linux/macOS 可能错成utf-8或latin-1 - 不支持指定目标编码(如强制转为 UTF-8 with BOM 或 UTF-16),也不保留原文件备份
真正批量转码得靠 File Encoding User 插件 + 命令行脚本
File Encoding User(注意不是 FileEncoding)是少数支持预设编码规则并配合 Sublime 的 build system 批量调用的插件。但它本身不执行转换,只是把编码信息透出给外部工具。
- 先在
Preferences → Package Settings → File Encoding User → Settings – User中写入规则,例如:{ "default_encoding": "UTF-8", "fallback_encoding": "GBK", "auto_detect": false } - 再新建一个
Tools → Build System → New Build System,内容为调用iconv或nkf的 shell 命令,例如 Linux/macOS:{ "shell_cmd": "iconv -f GBK -t UTF-8 \"$file_path/$file_name\" > \"$file_path/utf8_$file_name\"" } - 选中多个文件 → 右键 →
Build With→ 选该构建系统,即可逐个生成新编码文件(注意:原文件不会被覆盖)
Windows 下更稳妥的做法是用 PowerShell + iconv(推荐 Windows Terminal + WSL2)
Sublime 的 GUI 环境对多字节编码和 BOM 处理非常脆弱,尤其遇到 GB18030 混合 UTF-8 的老旧项目时,直接在编辑器里批量操作等于赌运气。真实项目中建议绕过 Sublime 执行转码:
- 用
chcp确认当前 cmd 编码(通常936),避免type命令二次损坏 - WSL2 中用
find ./src -name "*.txt" -exec iconv -f GBK -t UTF-8 {} -o {}.utf8 \;最可靠 - 若必须用 Windows 原生命令,
Get-Content xxx.txt -Encoding Default | Set-Content xxx_utf8.txt -Encoding UTF8中的Default实际对应系统 ANSI,不是文件真实编码,慎用
真正麻烦的从来不是“怎么点几下”,而是确认每个文件的真实源编码——没有元数据、没有 BOM、混用多种编码的文本文件,连 uchardet 都可能判错。别信“一键全部转 UTF-8”,先用 file -i 或 enca -L zh 扫一遍,再分组处理。











