vscode输出框中文乱码需先区分output面板与终端:output面板乱码主因是code runner等插件在非交互式面板执行,强制启用"code-runner.runinterminal": true可解决;终端乱码则须配置"terminal.integrated.env.windows": {"pythonioencoding": "utf8"}并设置支持中文的等宽字体。

输出框中文乱码:先分清是文件内容还是程序运行结果
VSCode里“输出框”这个词容易混淆——它可能指编辑器右下角的OUTPUT面板(比如Python测试、Task执行日志),也可能是集成终端(TERMINAL)里的命令行输出。这两者乱码原因完全不同,不能混着修。
如果是OUTPUT面板里显示文件或锟斤拷,大概率是程序本身输出时用了错误编码,VSCode只是忠实呈现;如果是终端里print("你好")出来一堆问号或方块,那问题在终端环境配置。别一上来就改VSCode设置,先看清楚乱码出现在哪块区域。
Python脚本输出乱码:PYTHONIOENCODING必须设为UTF-8
Windows上最常见的情况:Python脚本里写了中文print,终端却显示???或空格。根本原因是Python默认用系统代码页(CP936/GBK)读取sys.stdout,但VSCode终端实际走的是UTF-8管道,两边不匹配。
解决方式不是改VSCode,而是让Python强制用UTF-8输出:
- 在系统环境变量中新增:
PYTHONIOENCODING=UTF-8 - 或者在VSCode的
settings.json里加任务配置:"terminal.integrated.env.windows": { "PYTHONIOENCODING": "UTF-8" } - 临时验证可在终端里手动执行:
set PYTHONIOENCODING=UTF-8(Windows)或export PYTHONIOENCODING=UTF-8(macOS/Linux)
注意:仅设置files.encoding或改状态栏编码对运行时输出完全无效。
终端本身不显示中文:LANG和字体得一起动
即使Python输出正常,终端字体不支持中文也会显示方块。这需要两步同时做:
- 确保终端启动时
LANG是UTF-8:Linux/macOS检查echo $LANG是否为zh_CN.UTF-8或en_US.UTF-8;Windows需确认系统区域设置里“Beta版:使用Unicode UTF-8提供全球语言支持”已勾选 - 在VSCode设置中显式指定中文字体:
terminal.integrated.fontFamily设为"Cascadia Code", "Microsoft YaHei", "SimSun", "monospace"(逗号分隔,有fallback)
只改字体不设LANG,某些命令(如ls中文文件名)仍会乱码;只设LANG不配字体,中文照样是方块。两者缺一不可。
Git提交日志/Task输出乱码:别碰files.encoding
很多人看到Git输出里中文变\u4f60\u597d就去改files.encoding,这是典型误操作。files.encoding只控制VSCode如何读写磁盘上的文本文件,对Git命令、Shell脚本、Makefile执行结果毫无影响。
这类输出乱码本质是子进程的环境继承问题:
- Windows用户:在
settings.json中加"terminal.integrated.env.windows": { "CHCP": "65001" }(激活UTF-8代码页) - macOS/Linux用户:确保
~/.zshrc或~/.bashrc里有export LANG=zh_CN.UTF-8 - 所有平台:禁用
git config --global core.quotepath false可改善路径类中文显示
真正难搞的是那些硬编码了GBK输出的老工具(比如某些批处理或旧版Node CLI),它们不读环境变量,只能靠代理层转码——这种场景建议直接换工具,别在VSCode里硬扛。











