乱码根源在于Sublime构建系统、文件保存编码、Python运行时环境三者UTF-8未对齐:需在构建系统中添加"-u"禁用缓冲、显式设置"encoding": "utf-8"、确保文件物理存储为UTF-8无BOM,并配置PYTHONIOENCODING=utf-8。

汉化本身不会导致运行输出乱码——乱码只和编码解码链路错配有关,无论界面是否汉化。核心问题在于:Sublime 的构建系统、文件保存编码、Python 运行时环境三者之间没对齐 UTF-8。
构建系统里没加 -u 和 encoding
Sublime 默认构建系统不强制 Python 以无缓冲、UTF-8 模式运行,中文 print() 会卡在缓冲区或被系统默认编码(如 Windows 的 CP936)截断。
-
"cmd": ["python", "-u", "$file"]中的-u是关键,它禁用 stdout/stderr 缓冲,避免中文卡住不输出 - 必须显式加上
"encoding": "utf-8",否则 Sublime 内置控制台用本地编码(如 GBK)解析 Python 输出字节流,必然乱码 - 不要只改
cmd,漏掉encoding字段等于白配;ST4 中该字段仍有效,不是过时配置
文件保存编码不是 UTF-8(无 BOM)
即使代码里写了 # -*- coding: utf-8 -*-,如果文件物理存储是 GBK,解释器读取时就会按注释声明去解——但字节流本身是 GBK,结果还是双乱码。
- 右下角状态栏显示“UTF-8”≠ 文件真是 UTF-8;先执行
File → Reopen with Encoding → Chinese (GBK)看能否正常显示中文 - 能显示后,再执行
File → Save with Encoding → UTF-8(注意不是UTF-8 with BOM) - 验证是否干净:终端运行
xxd 文件名 | head -n1,输出不含ef bb bf才算成功
Python 运行时没设 PYTHONIOENCODING
Windows 下 Python 默认用系统 ANSI 编码(CP936)处理 I/O,Sublime 构建系统调用 python.exe 时不会自动继承编辑器的 encoding 设置。
- 临时生效:在构建系统
cmd中改成["cmd", "/c", "set PYTHONIOENCODING=utf-8 && python -u \"$file\""](Windows) - 全局生效:系统环境变量中添加
PYTHONIOENCODING=utf-8,重启 Sublime 后所有 Python 构建都受控 - macOS/Linux 用户可省略此步,Shell 环境通常已设好
LANG和LC_ALL
别信 default_encoding 能解决运行乱码
这个配置项只影响新建文件和手动另存时的默认编码,对“运行脚本时的输出解码”完全无效——它是 UI 层设置,不是 I/O 层控制。
-
"default_encoding": "UTF-8"可以留着,但别指望它修复控制台乱码 -
"fallback_encoding": "Chinese (GBK)"是读旧文件用的,和运行输出无关 - 真正起作用的是构建系统的
encoding字段 + Python 的-u+ 环境变量PYTHONIOENCODING
最常被忽略的是:同一份代码,在 Sublime 内置控制台乱码,但 cmd/powershell/terminal 里正常——这说明问题一定出在构建系统配置或环境变量上,而不是文件本身。先查 encoding 和 -u,再动环境变量,最后才碰文件编码。











