VSCode终端中文乱码是Python输出编码(cp936)与Windows终端解码(CP936)不匹配所致,需设PYTHONIOENCODING=utf8、终端字体支持中文、chcp 65001三者协同生效。

VSCode控制台中文乱码不是文件编码问题,而是 Python 进程输出编码(sys.stdout.encoding)和 Windows 终端解码规则不匹配——Python 默认按 UTF-8 写字节,终端却用 CP936(GBK)读,字节错位就变 □ 或 ?。
确认是不是终端层乱码
先跑两行命令验证:
-
chcp→ 如果输出活动代码页: 936,说明终端当前是 GBK -
python -c "import sys; print(sys.stdout.encoding)"→ 如果输出cp936(不是utf-8),就坐实了错配
编辑器里中文注释正常,但 print("你好") 在终端里变方块 → 典型终端层问题;终端里直接 echo 你好 正常,但 Python 脚本输出乱码 → 更确定是 Python 进程没对齐终端。
settings.json 必加的环境变量:PYTHONIOENCODING=utf8
这是最稳、覆盖所有启动方式(终端直跑、Code Runner、Tasks)的方案。注意三点:
- 值必须是
utf8(全小写、无横线),UTF-8或utf-8在 Windows 下无效 - 加完后必须关掉所有已打开的集成终端(
Ctrl + Shift + `全关),再新建一个才生效 -
terminal.integrated.encoding已被弃用,设了也无效,别浪费时间
Code Runner 和 Debug Console 要单独补环境变量
这两个地方不继承 terminal.integrated.env.windows 配置,得手动补:
- Code Runner:进插件设置 → 找
Code Runner: Executor Map→ 把 Python 项改成:set PYTHONIOENCODING=utf8 && python -u $fileName(Windows) - Debug Console(F5 调试时那个输出框):在项目根目录
.vscode/launch.json的对应配置里加"env": { "PYTHONIOENCODING": "utf8" },改完保存并重启调试会话
终端字体和 chcp 65001 必须同时存在
在 settings.json 加这两项:
-
"terminal.integrated.fontFamily": "'Sarasa Mono SC', 'Microsoft YaHei'"—— 没中文字体,UTF-8 字节再对也渲染不出来 -
"terminal.integrated.profiles.windows"里为 PowerShell 配置自动执行chcp 65001,例如:{ "PowerShell": { "source": "PowerShell", "args": ["-NoExit", "-Command", "chcp 65001 | Out-Null; [Console]::OutputEncoding = [System.Text.Encoding]::UTF8"] } }
真正容易被忽略的是:只改环境变量不换字体,或只换字体不设 chcp 65001,都会卡在最后一环。











