vscode控制台中文乱码90%是python进程与windows终端编码未对齐所致;需先用chcp和python -c "import sys; print(sys.stdout.encoding)"确认是否为cp936错配,再在settings.json中添加"terminal.integrated.env.windows": {"pythonioencoding": "utf8"}并重启终端,code runner和debug console需分别配置对应环境变量。

VSCode控制台打印中文乱码,90%不是文件编码错了,而是Python进程和Windows终端的编码没对齐——改右下角“UTF-8”或files.encoding完全无效。
怎么确认是终端编码错配,不是文件问题
先看现象:
- 编辑器里中文显示正常,但终端
print("中文")输出方块或问号 → 终端层问题 - 编辑器一打开就是□或
\u4f60\u597d→ 文件读取错位 - 终端里
echo 你好正常,但python -c "print('你好')"乱码 → Python进程没对齐终端编码
验证必须跑两行:
chcp —— 如果输出“活动代码页: 936”,说明终端当前用GBK
python -c "import sys; print(sys.stdout.encoding)" —— 如果输出cp936(不是utf-8),就坐实了错配
settings.json 必加的环境变量
这是最稳、覆盖所有启动方式(终端直接运行、Code Runner、Tasks)的方案:
"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"}
注意三点:
- 值必须是
utf8(全小写、无横线),UTF-8或utf-8在Windows下无效 - 加完必须关闭所有已打开的终端标签页(
Ctrl + Shift + `全关掉),再新建一个才生效 - 别碰
terminal.integrated.encoding——它已被弃用,设了也无效
Code Runner插件要单独改执行命令
Code Runner默认不读terminal.integrated.env.windows,会绕过你的配置:
- 进插件设置 → 找到“Code Runner: Executor Map” → 编辑
python项 - 把默认值
"python -u $fileName"改成:"set PYTHONIOENCODING=utf8 && python -u $fileName"(Windows) - Linux/macOS则用:
"export PYTHONIOENCODING=utf8 && python -u $fileName"
Debug Console(F5调试时的输出框)还是乱码?
Debug Console不继承终端环境变量,得单独配launch.json:
- 在项目根目录的
.vscode/launch.json中,给对应配置加"env": {"PYTHONIOENCODING": "utf8"} - 或者设
"console": "integratedTerminal",让调试输出走集成终端(推荐)
真正容易被忽略的是:PowerShell 启动时可能跳过-Command里的chcp指令(受执行策略限制),所以PYTHONIOENCODING才是跨场景最可靠的兜底手段。











