根本原因是Windows终端代码页为GBK而VS Code按UTF-8解析,需统一为UTF-8:修改settings.json添加"terminal.integrated.defaultEncoding": "utf8"及环境变量CHCP=65001;PowerShell还需设置[Console]::OutputEncoding为UTF8并写入$PROFILE。

VS Code终端输出中文、Emoji或特殊符号时显示为方块、问号、或一堆乱码字符,根本原因是Windows系统默认终端代码页为GBK(cp936),而VS Code内部按UTF-8解析字节流,二者错位导致解码失败——这不是字体问题,也不是文件编码问题,是终端输入/输出管道的编码协商断裂。
确认当前终端代码页
在VS Code集成终端中直接运行:
chcp
若返回“活动代码页:936”,说明正运行在GBK模式,必须切换;返回“65001”则跳过后续配置。这一步不能省略,否则可能重复设置无效项。
修改settings.json强制终端使用UTF-8
方法一:图形界面快速添加
① 按 Ctrl + , 打开设置 → 右上角搜索栏输入 terminal integrated default encoding → 点击右侧“在 settings.json 中编辑”链接 → 在花括号内插入一行:
"terminal.integrated.defaultEncoding": "utf8"
方法二:手动编辑JSON(推荐,兼容性更强)
① 按 Ctrl + Shift + P → 输入 Preferences: Open Settings (JSON) → 回车打开用户 settings.json 文件
② 在已有配置末尾的 最后一个 } 前 添加逗号,然后换行插入以下三段(顺序无关,但必须完整):
{"terminal.integrated.env.windows": {"CHCP": "65001"},
"terminal.integrated.shellArgs.windows": ["/K", "chcp 65001 > nul"],
"terminal.integrated.defaultEncoding": "utf8"}
注意:如果已存在 "terminal.integrated.env.windows" 字段,不要重复声明对象,而是把 "CHCP": "65001" 合并进已有大括号内,否则JSON语法错误会导致整个配置失效。
针对PowerShell用户的额外关键设置
PowerShell自身不自动继承CHCP环境变量,需显式重置输出编码,否则即使终端设为UTF-8,PowerShell仍以GBK输出字节。
第一步:在终端中临时执行
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
第二步:永久生效(避免每次重启都要输)
① 在PowerShell中运行 notepad $PROFILE(若提示路径不存在,先执行 if(!(Test-Path $PROFILE)){New-Item -Type File -Path $PROFILE -Force} 创建)
② 在打开的文本文件末尾另起一行,粘贴:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
③ 保存文件并关闭记事本
④ 关闭所有VS Code窗口,重新启动
这一步漏掉,你在PowerShell里用python print("你好")依然会乱码——因为Python进程从PowerShell继承了错误的输出编码,VS Code来不及干预。
验证是否修复成功
重启VS Code后,新建终端,直接运行:
echo "测试中文?∑α"
若全部字符清晰显示,无方块、无问号、无空白占位符,即配置完成。











