根本原因是Windows终端默认GBK编码与工具链UTF-8输出冲突,需统一在VSCode中配置PowerShell UTF-8环境、Git Bash locale及Python IO编码,重启后验证sys.stdout.encoding为utf-8且中文路径正常。

终端启动时就显示乱码,chcp 切换无效
根本原因不是 VSCode 自身编码设置,而是 Windows 终端(cmd/powershell)默认使用 GBK(代码页 936),而 VSCode 启动的终端进程继承了系统默认页,但 Node.js、Python 等工具链常按 UTF-8 输出中文,导致解码错位。
实操建议:
- 在 VSCode 设置中搜索
terminal.integrated.defaultProfile.windows,把它设为PowerShell(比 cmd 更易控制编码) - 打开
settings.json,添加:"terminal.integrated.profiles.windows": { "PowerShell": { "source": "PowerShell", "args": ["-NoExit", "-Command", "$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [System.Text.UTF8Encoding]::new()"] } } - 重启 VSCode 终端——此时
chcp显示仍为 936,但实际 I/O 已强制走 UTF-8,乱码消失
Git Bash 终端里中文路径报错或显示为问号
Git Bash 默认用 UTF-8,但它依赖 Windows 的 LC_ALL 和 LANG 环境变量做 locale 检测;一旦这些变量为空或设成 C,它就会退回到 ASCII 模式,拒绝处理中文路径。
实操建议:
- 在 VSCode 的
settings.json中配置:"terminal.integrated.env.windows": { "LC_ALL": "zh_CN.UTF-8", "LANG": "zh_CN.UTF-8" } - 确保 Git 安装时勾选了 “Enable file system caching” 和 “Use Windows' default console window”,否则即使环境变量正确,底层
msys2运行时仍可能 fallback - 避免在
.bashrc里手动改export LANG=C——这是常见踩坑点
Python 脚本 print 中文,在终端里变成 或空格
这不是终端问题,是 Python 解释器启动时没识别到终端支持 UTF-8。Windows 下 Python 3.7+ 默认检查 GetConsoleCP() 和 GetConsoleOutputCP(),而这两个 API 返回的是当前代码页(通常是 936),于是 Python 自作主张把 stdout 编码设为 gbk,和终端真实行为不一致。
实操建议:
- 临时解决:运行前加环境变量
PYTHONIOENCODING=utf-8,例如:set PYTHONIOENCODING=utf-8 & python myscript.py
- 一劳永逸:在 VSCode
settings.json中加"python.defaultInterpreterPath": "C:\path\to\python.exe", "terminal.integrated.env.windows": { "PYTHONIOENCODING": "utf-8" } - 注意:不要在脚本里写
sys.stdout.reconfigure(encoding='utf-8')——VSCode 终端下该方法会抛AttributeError
修改了设置却没生效,echo $LANG 还是空的
VSCode 终端是“新起进程”,它只读取启动那一刻的环境变量;如果在终端里手动 export,只影响当前 shell 实例,新开终端不会继承;同理,修改系统环境变量后,必须完全关闭 VSCode(包括后台进程),再重新打开。
验证是否真正生效的方法:
- 新开一个集成终端,直接运行:
python -c "import sys; print(sys.stdout.encoding)"
→ 应输出utf-8 - 运行:
locale
(Git Bash)或get-culture(PowerShell)→ 看输出是否含UTF-8相关字段 - 最关键的验证:在项目根目录新建含中文名的文件夹,然后
cd进去,看路径是否完整显示、无截断或问号


















