VSCode终端输出中文乱码_VSCode编码格式修改教程
VSCode终端里执行print("中文"),结果弹出一堆方块或问号——这个场景是不是太熟了?90%的情况不是文件编码写错了,也不是files.encoding没设对,真正的原因只有一个:Python进程的stdout编码和终端解码没对齐。改files.encoding完全没用,得从根上解决问题。
VSCode终端里执行print("中文"),结果弹出一堆方块或问号——这个场景是不是太熟了?90%的情况不是文件编码写错了,也不是files.encoding没设对,真正的原因只有一个:Python进程的stdout编码和终端解码没对齐。改files.encoding完全没用,得从根上解决问题。
terminal.integrated.env.windows 必须设为 utf8(大小写敏感)
Windows下Python有个坑:它默认不信任终端是UTF-8的。即便你手动敲了chcp 65001,Python仍可能自作主张fallback到cp1252或mbcs。唯一稳定的方案是透传环境变量,强制告诉Python“这里就是UTF-8世界”。具体操作:
- 在设置里写入
"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"}——注意是小写utf8,大写UTF-8在Windows下会失效,实测踩过这个坑的人不在少数。 - 千万别碰
terminal.integrated.encoding,这个配置已经弃用,设了也不起效,纯粹占位置。 - 如果用Code Runner插件,还得单独改它的执行命令:把
c对应的值从默认的"cd $dir && gcc "改成"chcp 65001 && cd $dir && gcc ",否则插件启动的终端照样乱码。
Debug Console 和 Output 面板乱码要单独处理
这两个面板不走终端链路,也不读terminal.*配置。它们依赖Node.js层的编码感知,Windows下Node默认不启用UTF-8模式,必须手动注入环境变量:
- 在项目根目录的
.vscode/launch.json里,找到当前调试配置,加上"env": {"PYTHONIOENCODING": "utf8"}。 - 确认代码里没有写
sys.stdout = io.TextIOWrapper(...)之类的硬编码——这种写法会覆盖环境变量,再配置也没用。 - 老版本ptvsd或自定义debug adapter要注意:如果启动参数里含
--log-to-stderr,乱码现象常伴随编码警告日志一起出现,检查一下总能发现线索。
字体链必须显式指定中英双语等宽字体
编码全部配置正确了,结果还是方块?那问题出在渲染层。VSCode不会自动fallback到系统中文字体,必须手动配字体链,把中文字体和英文字体一起写上:
- 设置
"terminal.integrated.fontFamily": "Fira Code, Sarasa Gothic SC, JetBrains Mono"—— Windows下务必用英文名Sarasa Gothic SC,别写“更纱黑体”这种中文字段,VSCode只认英文名。 - macOS推荐
"SFMono-Regular, PingFang SC";Linux建议"DejaVu Sans Mono, Noto Sans CJK SC"。 - 改完配置后,必须关闭现有终端tab,新开一个才能生效。验证方法用
echo "测试",别单靠print()——print依赖Python环境,echo更直接。 - 千万别用
SimSun(宋体),它不是等宽字体,用了之后光标错位、对齐崩坏,得不偿失。

最后说一个最容易被忽略的点:终端字体配置和环境变量必须同时生效,缺一不可。而且Debug Console和集成终端是两套独立的通道,不能指望一个配置打遍天下。把这几步走完,中文方块基本就告别你的VSCode了。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















