控制台中文乱码只与.sublime-build配置有关:必须用"cmd"数组模式、指定Python绝对路径、加"-u"参数,并同级设置"encoding":"utf-8",且修改后需手动切换构建系统生效。

控制台输出中文乱码只跟 .sublime-build 配置有关
文件本身编码设成 UTF-8、右下角点成 UTF-8、装 ConvertToUTF8 插件——这些全不影响 Build Results 窗口里的 print("中文") 输出。真正起作用的,只有构建系统(.sublime-build)里是否正确声明了 "encoding": "utf-8",以及子进程启动方式是否绕过 Windows 默认 GBK 解码。
必须用 cmd 数组写法,禁用 shell_cmd
shell_cmd 模式下,"encoding" 字段完全被 Sublime 忽略。哪怕你写了 "encoding": "utf-8",也毫无作用。
-
"cmd"是唯一能触发编码解码逻辑的字段,且必须是数组形式:例如["D:/Python39/python.exe", "-u", "$file"] - Python 路径必须写绝对路径,避免环境变量污染导致实际调用的不是你预期的解释器
-
-u参数不可省:它禁用 stdout 缓冲,否则中文可能卡在缓冲区不输出 -
"encoding": "utf-8"必须和"cmd"同级,不能嵌套在"cmd"里面,也不能写成"UTF-8"或"utf8"
Windows 下 C++/g++ 构建也要加编译器编码参数
如果用 Sublime 编译 C++ 并输出中文,光改 .sublime-build 的 "encoding" 还不够。g++ 默认按系统代码页读源码,std::cout 仍会崩成方块。
- 必须在
"cmd"中显式添加:"-finput-charset=UTF-8"和"-fexec-charset=UTF-8" - 源文件必须保存为 UTF-8 无 BOM,否则
-finput-charset会误读 BOM 字节 - 不要在构建命令里写
chcp 65001:它只影响手动打开的 cmd,Sublime 启动的子进程不继承该设置
改完配置后必须手动切换构建系统才生效
很多人保存了 Python3.sublime-build 就以为完事了,但 Sublime 不会自动切换。Build Results 窗口永远走当前选中的构建系统,旧配置还在内存里跑。
- 务必执行一次 Tools → Build System → Python3(或你命名的名称)
- 确认右下角状态栏显示的构建系统名称和你刚保存的文件名一致
- 如果脚本开头有
# -*- coding: utf-8 -*-,保留它——虽对 Python 3 非必需,但能防止某些旧版构建系统误判源码编码
最常被忽略的一点:构建系统配置和字体、插件、文件编码设置完全正交。你可能把所有其他地方都调对了,就差这一个 "encoding": "utf-8" 写在错位置,或者没手动切构建系统——结果还是满屏“涓枃”。











