converttoutf8插件仅改变sublime text读取文件时的解码方式,不修改磁盘文件编码;真正转码需手动“save with encoding → utf-8”或使用iconv等外部工具。

ConvertToUTF8插件到底改了什么? 它只改变 Sublime Text **怎么读文件**,不改磁盘上真正的编码。打开一个 GBK 中文文件,插件会自动按 GBK 解码、再转成 UTF-8 字符串显示在编辑器里——你看到的“正常中文”是内存里的结果,原文件还是 GBK 字节,没动过。
所以:
- 装完插件后乱码消失了?那是显示正常了,但
Save仍会以原编码(比如 GBK)写回磁盘 - 你改了几行中文再
Ctrl+S,别人用记事本打开还是乱码——因为文件根本没转成 UTF-8 - 插件不支持反向操作:不能把 UTF-8 文件“转出”为 GBK,只负责“读进来”的兼容
真正转换编码必须走 Save with Encoding 想让文件磁盘内容变成 UTF-8,唯一可靠动作是:先确认当前显示正确,再手动触发保存为新编码。
实操分两步:
- 如果打开就乱码 →
File → Reopen with Encoding → Chinese (GBK)(或其他你判断的原始编码),直到中文正常 - 确认内容无误后 →
File → Save with Encoding → UTF-8(注意不是UTF-8 with BOM)
为什么命令行 iconv 更稳?
Sublime 的 Save with Encoding 依赖内部编码映射表,对某些边缘编码(如 GB18030 混合变体、含异常控制字符的 ISO-8859 系列)可能失败或静默丢字。而 iconv 是系统级工具,参数明确、行为可预期。
例如转 GBK 到 UTF-8:
iconv -f GBK -t UTF-8 input.txt > output.txt关键点:
-
-f必须填对原始编码,错填会导致双乱码(比如原文是 GBK 却写-f UTF-8) - Windows 用户建议用 Git Bash 运行,避免 CMD 编码污染
- 若项目含换行符敏感逻辑,记得关掉 Git 的
core.autocrlf:git config --global core.autocrlf false
批量转码别指望 Sublime 原生功能 Sublime Text 没有“选中多个文件→一键转 UTF-8 并保存”的菜单项,所有所谓“批量”都是伪操作:要么靠插件硬扫目录(风险高、不可控),要么靠外部工具驱动。
推荐组合:
- 小批量(
- 中批量(10–100):写一行 PowerShell:
Get-ChildItem *.txt | ForEach-Object { iconv -f GBK -t UTF-8 $_.FullName | Set-Content "$($_.DirectoryName)\utf8_$($_.Name)" -Encoding UTF8 } - 真正工程级:直接在构建流程里加
iconv步骤,或用 Python 脚本统一处理编码 + BOM 清理











