核心是设置PYTHONIOENCODING环境变量为utf-8,配合python -u参数和源文件编码声明# -- coding: utf-8 --,并确保Windows终端启用chcp 65001及兼容字体。

Sublime 构建系统输出中文乱码,核心在 PYTHONIOENCODING 环境变量
不是编辑器编码设成 UTF-8 就能解决控制台乱码——构建系统(Build System)的输出编码由 Python 运行时环境决定,和文件打开编码无关。关键是要让 Python 解释器知道 stdout/stderr 应该用 UTF-8 编码写入终端。
实操建议:
- 新建构建系统:
Tools → Build System → New Build System - 填入以下配置(注意
env字段必须显式声明):{ "cmd": ["python", "-u", "$file"], "file_regex": "^[ ]*File \"(*?)\", line ([0-9]*)", "selector": "source.python", "env": {"PYTHONIOENCODING": "utf-8"} } - 保存为
PythonUTF8.sublime-build,并在菜单中启用它 -
-u参数强制 Python 使用无缓冲输出,避免中文卡在缓冲区不显示
Windows 控制台默认不支持 UTF-8,chcp 65001 只是临时补丁
即使构建系统配对了 PYTHONIOENCODING,Windows 命令提示符(cmd)或 PowerShell 默认仍用 CP936(GBK)渲染,导致中文显示为方块或问号。
临时验证方法(不改系统设置):
- 在 Sublime 构建系统里把
cmd改成:["cmd", "/c", "chcp 65001 >nul && python -u $file"] - 或者直接在终端里先执行
chcp 65001,再运行subl启动 Sublime - 但注意:某些旧版 cmd 对
chcp 65001支持不稳定,可能崩溃或回退
Python 源文件本身没声明编码,# -*- coding: utf-8 -*- 仍有必要
构建系统只管输出,不管源码解析。如果 Python 文件顶部没写编码声明,且文件含中文字符串(如 print("你好")),Python 2 会报 SyntaxError,Python 3 虽默认 UTF-8,但在某些 Windows 环境下仍可能 fallback 到系统 locale(GBK),导致读取源码出错。
一款AI工具,主要用于选择要监控的 AI 助手 → 查看 token 消耗。支持 Hermes / Claude Code / CodeX / OpenClaw,每次需手动选择,适合需要提升相关任务效率的用户。
务必在文件第一或第二行加:
# -*- coding: utf-8 -*-
这不是形式主义——它明确告诉解释器“这个文件字节流应按 UTF-8 解码”,避免因编辑器保存编码与解释器预期不一致引发的隐性错误。
状态栏显示 UTF-8 ≠ 控制台能正确显示中文
右下角看到 UTF-8,只代表 Sublime 当前用 UTF-8 解析了文件内容,并不保证构建输出、终端渲染、甚至 Python 解释器加载时也用了同一套编码链。
容易踩的坑:
- 误以为改了
default_encoding就一劳永逸——它只影响新建/打开文件,和构建输出无关 - 点了状态栏
UTF-8就以为文件已转码——这只是内存重解析,磁盘字节没变,Save with Encoding才真正落盘 - 在 Windows 上依赖
chcp 65001却没配字体——需手动把 cmd 字体改成Lucida Console或Consolas,否则 UTF-8 字符仍无法渲染










