vscode终端中文乱码主因是终端进程未启用utf-8编码,需按环境链配置:powershell需设$outputencoding和chcp 65001,git bash需配lang/lc_all,python需设pythonioencoding,wsl/linux需在settings.json中配置terminal.integrated.env.linux/osx。

VSCode终端中文乱码,90%不是字体或编辑器设置问题,而是终端进程本身没用 UTF-8 编码收发数据——改 Shell 类型 + 补环境变量才能根治。
PowerShell 终端启动就乱码,chcp 65001 无效
PowerShell 默认代码页是 936(GBK),但 chcp 65001 只改控制台页,不改 .NET 的 Console.OutputEncoding,Python/Node.js 仍按 GBK 解码输出字节,结果就是方块或 。
实操建议:
- 确认
$PROFILE路径:运行$PROFILE.CurrentUserCurrentHost,若返回路径不存在,手动创建该文件 - 在
$PROFILE末尾加一行:[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 - VSCode 设置里搜
terminal.integrated.defaultProfile.windows,确保值为powershell - 重启 VSCode,新开终端后运行
echo $OutputEncoding,应输出System.Text.UTF8Encoding
Git Bash 中文路径显示为 \344\273\243\347\256\241
这是 Git Bash 检测到 LANG 或 LC_ALL 为空/为 C,自动降级到 ASCII 模式,拒绝解析 UTF-8 字节流,导致中文路径被转义成八进制。
实操建议:
- 终端里运行
locale,检查输出是否含UTF-8;若为zh_CN.GBK或空白,说明 locale 未生效 - 在 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” —— 必须**不勾选**,否则底层仍走 GBK
- 避免在
~/.bashrc里写export LANG=C,这是高频踩坑点
Python print("中文") 输出乱码,但 echo 正常
说明终端本身能显示中文(字体 OK、shell 编码已调),但 Python 解释器启动时读错了环境,把 sys.stdout.encoding 错判为 gbk 或 ascii,导致写入字节时编码错位。
实操建议:
- 不要在脚本里反复调
sys.stdout.reconfigure(encoding='utf-8')—— 子进程(如 subprocess.run)会重置它 - 统一用环境变量驱动:在
settings.json加"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf-8"} - 验证是否生效:新开终端,运行
python -c "import sys; print(sys.stdout.encoding)",必须输出utf-8 - Windows 下若仍报
UnicodeEncodeError: 'gbk' codec can't encode character,说明某处硬编码了encoding='gbk',需查代码
WSL / Linux 终端 locale 显示 LANG=C
VSCode 启动 WSL 终端时,不会自动 source ~/.bashrc 或 ~/.zshrc,导致 shell 配置里的 export LANG=zh_CN.UTF-8 根本没加载,终端继承的是系统默认的 C locale。
实操建议:
- 先在 WSL 系统终端(非 VSCode)中运行
locale,确认系统级 locale 已设对(如LANG=zh_CN.UTF-8) - VSCode
settings.json中添加:"terminal.integrated.env.linux": {"LANG": "zh_CN.UTF-8"}或"terminal.integrated.env.osx": {"LANG": "zh_CN.UTF-8"} - 若用 zsh,检查
~/.zshrc是否有export LC_ALL=C这类覆盖项,删掉 - 别依赖
files.encoding设置——它只管编辑器读文件,和终端进程编码毫无关系
最易忽略的一点:所有环境变量配置(LANG、PYTHONIOENCODING)必须写在 settings.json 的顶层对象里,不能嵌套在其他字段下;且修改后必须重启终端(不是重载窗口),否则变量不会注入新进程。











