远程中文乱码本质是Sublime用UTF-8解码GBK/GB18030字节流所致,解决须先用file -i或Notepad++确认真实编码,再Reopen with Encoding→Chinese (GBK)使显示正常,最后Save with Encoding→UTF-8(无BOM)同步回远程。

远程编辑中文乱码,本质是文件在远程系统(如 Linux 服务器)上以 GBK/GB18030 存储,而 Sublime Text 本地默认用 UTF-8 解码——它读的是字节流,不是“中文文件”,所以一打开就是“锟斤拷”。解决路径和本地文件一致,但远程场景多一层传输干扰,必须先确认真实编码,再分步操作。
怎么确认远程文件的真实编码?别靠猜
远程文件的编码不能看 Sublime 右下角显示的 “UTF-8”,那只是它当前怎么读,不是文件本来的样子。你看到乱码,恰恰说明它读错了。
- Linux/macOS 远程终端中运行:
file -i 文件名,重点看输出里的charset=gbk或charset=utf-8 - 如果
file命令不支持-i(如某些旧版 busybox),改用:iconv -f gbk -t utf-8 文件名 >/dev/null 2>&1 && echo "likely gbk" - Windows 用户若通过 SFTP 挂载远程目录,建议先用 Notepad++ 直接打开该文件——它右下角显示的 “GBK” 比 Sublime 更可信
- 绝对别信
detect_encoding: true:它会让 Sublime 跳过 BOM 主动试 GBK,结果把带 BOM 的 UTF-8 日志文件判成乱码
Reopen with Encoding 必须在本地执行,且只改视图不改磁盘
远程编辑通常走 SFTP 插件(如 SFTP、SyncedSidebar)或挂载远程目录。无论哪种方式,文件内容已下载到本地缓存或临时区——Reopen with Encoding 操作作用于这个本地副本,安全、可逆。
- 打开乱码文件后,立刻点击右下角当前编码名(比如
UTF-8)→ 选Reopen with Encoding→Chinese (GBK) - 如果还是乱码,依次试
Chinese (GB2312)、Western (Windows 1252);只要中文一出来,右下角变成Chinese (GBK),就说明原始编码识别对了 - 点错没关系,再点一次换回其他编码即可;这一步不写磁盘,不会影响远程服务器上的原始文件
- 千万别点老菜单里的
Convert to UTF-8:它会静默重写本地缓存并同步回远程,原始编码信息直接丢失
Save with Encoding → UTF-8 才真正同步到远程,但有陷阱
只有这一步才会把当前视图里已正确解码的 Unicode 内容,按新编码写回磁盘,并触发 SFTP 插件上传——但它依赖前一步的解码完全正确,否则就是双乱码。
- 必须在
Reopen with Encoding后中文显示完全正常,再执行File → Save with Encoding → UTF-8(注意:不是UTF-8 with BOM) - 保存后关闭再重开,右下角应显示
UTF-8且中文仍正常;如果别人用记事本打开还是乱码,说明上一步没识别对原始编码 - 检查是否真去除了 BOM:
xxd 文件名 | head -n1,输出不含ef bb bf才算干净;否则 Python/Git 会报Non-UTF-8 code starting with '\xef' - 若保存失败或静默丢字,可能是文件含 GB18030 混合变体或异常控制字符——建议先用 Notepad++ 转一次 GBK → UTF-8(无 BOM),再拖进 Sublime 验证
ST4 用户注意:fallback_encoding 已失效,default_encoding_on_save 才管用
Sublime Text 4 彻底移除了 fallback_encoding 字段,所谓“全局兜底编码”不复存在。你加 "fallback_encoding": "Chinese (GBK)" 到设置里,完全无效。
- 真正控制保存行为的是
default_encoding_on_save:设为"UTF-8"(注意大小写和短横),就能强制所有Ctrl+S静默以 UTF-8 写入磁盘 -
default_encoding已被官方标记为“已弃用”,它只影响新建空文件右下角显示的编码标识,以及“另存为”对话框默认选中的编码项 - 推荐用户设置组合:
"default_encoding_on_save": "UTF-8"+"save_with_bom": false+ 删除detect_encoding行 - 插件
ConvertToUTF8官方仓库早已下架,Package Control 搜到的大多是过期镜像;如需自动转换,务必去 GitHub 找作者原 repo(最后更新于 2020)
远程场景最易忽略的点:你以为在编辑远程文件,其实每一步操作都发生在本地缓存层。Reopen 和 Save 的对象不是服务器上的原始字节,而是 Sublime 拉下来的副本。所以确认真实编码永远是第一步,也是唯一不可跳过的一步。


















