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

Sublime Text 控制台中文乱码,不是文件编码问题,而是构建系统没告诉 Python 子进程“用 UTF-8 读写 stdout”——必须在 .sublime-build 里显式配置 "encoding": "utf-8",否则 Windows 下必乱。
为什么改编辑器编码没用?
控制台(Build Results)输出乱码和你打开的文件编码完全无关。它来自 Python 进程的标准输出流,而 Sublime 的构建系统默认不指定编码,Windows 上就按系统 locale(通常是 GBK)去 decode Python 输出的 UTF-8 字节流,结果就是“涓枃”或“”。右下角切到 UTF-8、装 ConvertToUTF8、改 default_encoding 都不影响这个环节。
必须改 .sublime-build 文件
关键点只有三个:用 "cmd" 模式、指定绝对路径的 Python、加 "encoding": "utf-8"。其他写法基本无效:
-
"shell_cmd": "python -u $file"——shell_cmd忽略encoding字段,退回到系统 locale -
"cmd": ["python", "-u", "$file"]——python是命令行别名,可能指向错误版本,且不保证是 UTF-8 环境 - 漏掉
-u参数 —— Python 缓冲 stdout,中文可能卡住不输出
正确示例(存为 Python3.sublime-build):
{
"cmd": ["D:/Python39/python.exe", "-u", "$file"],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"encoding": "utf-8",
"selector": "source.python"
}
Windows 用户额外注意
别指望 chcp 65001 或 PYTHONIOENCODING=utf-8 生效——Sublime 启动的 subprocess 不继承 cmd 窗口的 codepage,env 字段设 PYTHONIOENCODING 在 Windows 上被 Python 官方明确标记为无效。唯一可靠路径就是上面那个 .sublime-build 配置。Mac/Linux 用户虽多数默认 UTF-8 locale,但若终端 locale 是 en_US.ISO-8859-1,同样要加 "encoding": "utf-8"。
脚本开头加 # -*- coding: utf-8 -*- 有用吗?
对 Python 3 来说,这行只是文档作用(默认已是 UTF-8),但它能防止某些旧构建系统误判源码编码。更重要的是:确保文件本身以 UTF-8(无 BOM)保存——如果文件是 GBK 编码却声明 UTF-8,Python 解析时就会报 SyntaxError: Non-UTF-8 code starting with '\xe4'。所以先用 file -i 或 Notepad++ 确认真实编码,再决定是否转存。
真正容易被忽略的是:改完 .sublime-build 后,必须手动切换一次构建系统(Tools → Build System → Python3),否则 Sublime 仍用旧缓存配置运行。











