VSCode终端中文乱码根源是终端进程未启用UTF-8编码,而非编辑器设置问题;必须在shell启动环节干预:PowerShell需配置chcp 65001并设为默认终端,Git Bash/WSL需正确设置LANG/LC_ALL环境变量,Python需配PYTHONIOENCODING,所有修改后须关闭全部终端重开。

VSCode终端输出中文乱码,不是编辑器编码设置没调对,而是终端进程(PowerShell、Git Bash、WSL)本身没走UTF-8——改files.encoding或右下角切编码完全无效,必须从shell启动环节干预。
PowerShell终端里print("中文")显示□或问号
根本原因是PowerShell默认用GBK(CP936)代码页,但Python/Node等子进程按UTF-8发字节流,终端解码时直接错位。这不是字体问题,也不是$PROFILE里写[Console]::OutputEncoding能解决的——它只影响.NET原生控制台API,对python进程无效。
- 临时验证:在VSCode终端里直接运行
chcp 65001,再执行python -c "print('中文')",立刻变正常 - 一劳永逸:在VSCode的
settings.json中添加terminal.integrated.profiles.windows配置,确保带-NoExit和-Command参数 - 必须确认
terminal.integrated.defaultProfile.windows设为powershell,而不是cmd或Windows PowerShell(旧名易混淆) - 别在
$PROFILE里加[Console]::OutputEncoding = ...,它对子进程无作用
Git Bash终端中文路径报错或显示为?
Git Bash默认走UTF-8,但它会读取LANG和LC_ALL环境变量做locale检测;一旦这两个变量为空或为C,它就退回到ASCII模式,拒绝处理中文路径或输出。
- 先在终端里运行
locale,如果输出是LANG=zh_CN.GBK或LANG=C,说明没生效 - 在VSCode的
settings.json中添加terminal.integrated.env.windows,填入{"LANG": "zh_CN.UTF-8", "LC_ALL": "zh_CN.UTF-8"} - 检查Git Bash安装时是否勾选了“Use Windows' default console code page”——没勾选才真正启用UTF-8
- 不要在
~/.bashrc里写export LANG=C,这是常见踩坑点
Python脚本print中文仍乱码,但echo "中文"正常
这是Python解释器自身编码推断失败:它启动时查GetConsoleCP()得到936,就自作主张把sys.stdout.encoding设成gbk,哪怕你已执行chcp 65001,它也可能缓存旧值。
- 临时解决:启动前加环境变量,例如
set PYTHONIOENCODING=utf-8 & python myscript.py - 长期方案:在VSCode的
settings.json中加"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf-8"} - 不推荐在脚本里硬写
sys.stdout.reconfigure(encoding='utf-8')——它只在Python 3.7+且终端真实支持时有效,否则抛AttributeError - 调试器场景另需单独配
launch.json里的env字段,和终端无关
字体正常但中文还是方块
VSCode终端字体设置和Windows系统终端属性是两套逻辑。只改terminal.integrated.fontFamily不够,系统级字体也得手动指定,而且旧终端不会刷新。
- 在VSCode设置中搜
terminal.integrated.fontFamily,填入"Cascadia Code", "Microsoft YaHei", monospace - 然后在VSCode终端窗口右键 → 属性 → 字体,手动选
Cascadia Code(不能留空,也不能选“点阵字体”) - 改完必须关闭所有已打开的终端,再按
Ctrl + Shift + `新开——旧终端不会重载字体 - 旧版Windows(1903以前)可能不支持
chcp 65001,建议升级或换Git Bash
最常被忽略的是:所有修改后必须关闭全部终端窗口再重开,VSCode不会热更新终端进程的编码或字体状态;另外,不同终端(PowerShell/Git Bash/WSL)要分开排查,混用一套配置大概率失效。


















