vscode中python输出中文乱码主因是终端编码与python进程不匹配,需通过chcp和sys.stdout.encoding确认代码页,再配置pythonioencoding环境变量并重启终端。

VSCode里print("中文")输出方块、问号或“浣犲ソ”这类乱码,90%不是代码或文件编码错了,而是Python进程输出的字节流和终端解码规则没对齐——改右下角“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)的通用解法:
- 在
settings.json中添加:"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"字段: "env": {"PYTHONIOENCODING": "utf8"}- 或者更彻底地设
"console": "integratedTerminal",让调试也走集成终端
字体支持是最后一道防线:如果以上都做了还乱码,检查终端是否用了支持中文的字体(如Consolas、Cascadia Code),在设置里搜terminal.integrated.fontFamily改掉。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











