VSCode终端中文乱码根源在于终端进程编码与程序输出不匹配,需从shell层配置:PowerShell需chcp 65001并写入$PROFILE;Git Bash/WSL需正确设置locale和环境变量;字体须在VSCode和系统终端两级配置;所有修改后必须关闭全部终端重开。

VSCode终端中文乱码不是编辑器本身的问题,而是终端进程(PowerShell、cmd、Git Bash等)没按UTF-8输出,或字体不支持渲染——改VSCode设置没用,必须从shell层动手。
PowerShell终端里print("中文")显示□或问号
根本原因是PowerShell默认用GBK(CP936)代码页,但Python/Node等工具按UTF-8发字节流,两边对不上。不是字体问题,也不是files.encoding能管的。
- 临时修复:在VSCode终端里直接运行
chcp 65001,立刻生效,但每次新开终端都要重输 - 一劳永逸:编辑PowerShell配置文件(运行
notepad $PROFILE),在末尾加一行:chcp 65001 > $null - 别用
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8——它只影响.NET控制台API,对python或node子进程完全无效 - 必须确保VSCode默认终端是PowerShell:设置里搜
terminal.integrated.defaultProfile.windows,值设为powershell
终端字体正常但中文还是方块
VSCode终端字体设置和Windows系统终端属性是两套逻辑,只改VSCode里的terminal.integrated.fontFamily不够,系统级字体也得配。
- 先在VSCode设置中搜
terminal.integrated.fontFamily,填入支持中文的等宽字体链,例如:"Cascadia Code", "Microsoft YaHei", monospace - 然后在VSCode终端窗口右键 → 属性 → 字体,手动选
Cascadia Code或Consolas(不能留空或选“点阵字体”) - 改完必须关闭所有已打开的终端,再按
Ctrl + Shift + `新开一个——旧终端不会刷新字体 - 如果用的是旧版Windows(1903以前),
chcp 65001可能不生效,建议升级或换Git Bash
Git Bash或WSL终端中文显示异常
Git Bash默认走UTF-8,但VSCode集成终端有时会忽略其locale;WSL则完全依赖Linux侧配置,和Windows区域设置无关。
- Git Bash:先在终端里运行
locale,如果输出是LANG=zh_CN.GBK,说明没走UTF-8;在settings.json里加:"terminal.integrated.env.windows": { "LANG": "zh_CN.UTF-8", "LC_ALL": "zh_CN.UTF-8" } - WSL:进WSL终端执行
sudo dpkg-reconfigure locales,勾选zh_CN.UTF-8并设为默认;再确认/etc/wsl.conf里有[boot] systemd=true - 别在Git Bash里硬加
chcp命令——它不识别该指令,会报错 - 如果Git Bash安装时没勾选
Use Windows' default console code page,那它天然支持UTF-8,此时乱码大概率是字体问题
Python脚本输出中文正常,但终端里跑就乱码
这是Python启动时读错了环境编码,sys.stdout.encoding被终端“骗”成了cp936,哪怕你刚输过chcp 65001,Python也可能缓存旧值。
- 验证方法:终端里先输
chcp 65001,再输python -c "import sys; print(sys.stdout.encoding)"——必须看到utf-8 - 最稳解法:在VSCode设置里搜
terminal.integrated.env.windows,加环境变量:"PYTHONIOENCODING": "utf8" - 不推荐在脚本里写
sys.stdout.reconfigure(encoding='utf-8')——它只在Python 3.7+且终端真正支持时才生效,否则抛AttributeError - 如果用
python -u,只是禁用缓冲,不解决编码推断错误
最容易被忽略的一点:所有shell层的修改($PROFILE、chcp、环境变量)都要求关闭全部终端后新开——VSCode不会热更新这些底层状态,开着旧终端试等于白忙。


















