Sublime Text控制台中文乱码的根本原因是构建系统未正确配置UTF-8编码协商,必须在.sublime-build文件中使用"cmd"数组模式、指定Python绝对路径、添加"-u"参数,并同级设置"encoding":"utf-8",且修改后需手动切换构建系统生效。

Sublime Text 汉化本身不会导致控制台乱码——真正出问题的是构建系统(.sublime-build)没配对 UTF-8 编码协商,而汉化后用户更容易忽略这个关键配置。
为什么汉化后突然控制台中文变“涓枃”?
汉化包通常只改菜单、对话框文字,不影响底层 I/O 编码逻辑。但汉化后你更常运行含中文 print() 的脚本,这时就暴露出原本就存在的构建系统缺陷:Sublime 默认用系统 locale(Windows 是 GBK)去 decode Python 输出的 UTF-8 字节流,结果就是乱码。这不是汉化惹的祸,是它把你一直没修的坑照出来了。
- 右下角显示“UTF-8”≠文件或输出是 UTF-8 —— 它只管编辑区显示
-
ConvertToUTF8插件对 Build Results 窗口完全无效 - 改字体、改
default_encoding、切状态栏编码,全都不影响print()输出
必须改 Python3.sublime-build 的三个硬性条件
控制台输出乱码唯一可靠解法,是新建或修改构建系统文件,且必须同时满足以下三点:
- 用
"cmd"数组模式,不能用"shell_cmd"(后者直接忽略"encoding"字段) -
"cmd"中调用 Python 绝对路径,例如"D:/Python39/python.exe",避免环境变量指向错误版本 - 顶层加
"encoding": "utf-8"(注意:不是放在"cmd"里,是同级键) - 显式加
"-u"参数禁用缓冲,否则中文可能卡住不输出
正确示例(Windows):
{
"cmd": ["D:/Python39/python.exe", "-u", "$file"],
"file_regex": "^.*?File \"(.*?)\", line ([0-9]*)",
"encoding": "utf-8",
"selector": "source.python"
}
改完构建系统后不生效?你漏了最关键一步
保存 Python3.sublime-build 文件后,Sublime 不会自动切换构建系统——这是 90% 用户卡住的地方。
- 必须手动执行
Tools → Build System → Python3(名称要和你保存的文件名一致) - 确认右下角状态栏显示的构建系统名称已变成你刚命名的那个(如
Python3) - 如果仍显示
Automatic或旧名称,说明还在走默认配置,乱码必然持续
脚本文件本身也得是 UTF-8(无 BOM)
即使构建系统全配对,脚本若以 GBK 保存,Python 解析时就会报 SyntaxError: Non-UTF-8 code starting with '\xe4',或者中文注释/字符串直接失效。
- 用 Notepad++ 打开脚本 → 右下角看真实编码(别信 Sublime 状态栏)
- 若显示
GBK,先执行File → Reopen with Encoding → Chinese (GBK)确认能读 - 再执行
File → Save with Encoding → UTF-8(注意选无 BOM 版本) - 顺手在脚本首行加
# -*- coding: utf-8 -*-,虽对 Python 3 非必需,但可防某些旧构建系统误判
真正麻烦的点不在写 JSON,而在于:每台 Windows 机器、每个 Python 安装路径都得单独填绝对路径;且每次改完 .sublime-build,都得手动点一次构建系统切换——这个动作没有快捷键,也容易被跳过。











