sublime build output 中文显示方框是因python输出编码与sublime解码不匹配;需新建.sublime-build文件,设置"env": {"pythonioencoding": "utf-8"}和"encoding": "utf-8"并启用该构建系统。

Sublime 运行结果(即 Build Output 面板)中中文显示方框,根本不是文件编码或侧边栏字体问题,而是 Python 进程输出字节流与 Sublime 控制台解码逻辑不匹配——它默认把 stdout 当作 UTF-8 解析,但 Windows 上 Python 2.7/3.x 默认用 gbk 输出,Linux/macOS 则依赖 locale,结果就是 \u4f60\u597d 被当乱码渲染成 □。
Build Output 中文变方框:Python 输出编码没对齐
你写 print("你好"),终端能正常显示,但 Sublime 的 Build Output 里是方框,说明问题出在 Sublime 怎么“读” Python 打印出来的字节。它不关心你的源文件是不是 UTF-8,只看你运行时 stdout 流送过来的是什么字节、它用什么编码去 decode。
- Windows 下 Python 默认
sys.stdout.encoding是cp936(即 GBK),而 Sublime Build 系统硬性按 UTF-8 解码 → 字节错位 → 方框 - macOS/Linux 若
LANG=en_US.UTF-8,通常没问题;但若设成zh_CN.GB18030,同样会触发方框 - 这个现象和
default_encoding、fallback_encoding完全无关——那些只管“打开文件”,不管“运行输出”
修复 Build Output 中文:改 Build System 而非编辑器设置
必须让 Python 进程输出 UTF-8 字节,并确保 Sublime 按 UTF-8 解码。不能靠改 Preferences.sublime-settings,得动 .sublime-build 文件。
- 菜单
Tools → Build System → New Build System…,粘贴以下内容(Windows 示例):
{
"cmd": ["python", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"},
"encoding": "utf-8"
}
-
"env": {"PYTHONIOENCODING": "utf-8"}强制 Python 用 UTF-8 编码 stdout/stderr -
"encoding": "utf-8"告诉 Sublime Build Output 面板用 UTF-8 解码收到的字节流 -
-u参数禁用输出缓冲,避免中文卡住不刷出来 - Linux/macOS 用户若 locale 不是 UTF-8,还需加
"env": {"LANG": "en_US.UTF-8", "PYTHONIOENCODING": "utf-8"}
验证是否生效 & 常见失效点
保存为 Python-UTF8.sublime-build,再用 Tools → Build System 选它,然后运行含中文 print 的脚本。若仍显示方框,重点查这三处:
- 确认 Build System 真被启用:右下角状态栏应显示
Python-UTF8,不是Python或Automatic - 检查 Python 版本:Python 2.7 对
PYTHONIOENCODING支持不稳定,建议升到 3.6+;若必须用 2.7,改用cmd中插入chcp 65001 &&(Windows)强制代码页 - 别漏掉
"encoding": "utf-8"—— 很多人只加 env,忘了告诉 Sublime “怎么读”,结果还是方框 - 插件如
Codecs37或ConvertToUTF8对 Build Output 完全无效,它们只处理文件打开/保存流程
最易忽略的是 Build System 没真正激活,以及 "encoding" 字段漏写——这两个点一错,前面所有配置都白搭。











