vscode控制台中文乱码主因是windows终端默认gbk解码与python等子进程utf-8输出不匹配,需在terminal.integrated.profiles.windows中为powershell或cmd配置chcp 65001启动参数,并设置"terminal.integrated.env.windows": {"pythonioencoding": "utf8"},同时重启终端生效。

VSCode 控制台提示信息中文乱码,90% 是终端子进程(如 Python、Node.js)输出的 UTF-8 字节流,被 Windows 默认的 GBK 终端(conhost)错误解码导致的——不是文件编码错了,也不是 VSCode 界面问题,而是 stdout 和终端解码链路没对齐。
terminal.integrated.profiles.windows 必须加 chcp 65001
PowerShell 或 CMD 启动时默认用代码页 936(GBK),但 Python/Node 进程在 VSCode 里默认按 UTF-8 输出字节。终端不提前切页,就必然把 你好 的 UTF-8 字节 E4B8AD 当作 GBK 解,变成“涓濂”这类乱码。
- PowerShell(推荐):在
settings.json中配置"terminal.integrated.profiles.windows",确保args包含chcp 65001,例如:"PowerShell": { "source": "PowerShell", "args": ["-NoExit", "-Command", "chcp 65001 > $null"] } - CMD:用
["/K", "chcp 65001"],/K保证命令执行后终端不退出 - 改完必须关闭所有已打开的集成终端,再点
+新建一个才生效——复用旧终端不会重跑chcp - 别只改
terminal.integrated.defaultProfile.windows,它只是指定默认启动哪个 profile,真正起作用的是 profile 本身的args
Python 脚本输出乱码要配 PYTHONIOENCODING
chcp 65001 解决了终端解码层,但 Python 解释器本身仍可能 fallback 到系统 locale(GBK)。必须让 Python 明确知道 stdout 应该用 UTF-8 编码写入。
- 在
settings.json中添加:"terminal.integrated.env.windows": { "PYTHONIOENCODING": "utf8" } - 注意是小写
utf8,不是UTF-8或utf-8——Windows 下只有utf8被识别 - 这个环境变量影响所有通过集成终端启动的 Python 进程,包括
python script.py、pip list等命令输出 -
terminal.integrated.encoding已被弃用,设了也无效,别碰
Debug Console 里还是问号?launch.json 得补 env
调试器控制台(Debug Console)不继承终端设置,它由 VSCode 的 debug adapter 单独拉起进程,PYTHONIOENCODING 不会自动透传过去。
- 在项目根目录的
.vscode/launch.json中,找到你的 launch 配置(如Python: Current File),在configurations数组里加:"env": { "PYTHONIOENCODING": "utf8" } - 如果用了老版本 ptvsd 或自定义 debug adapter,还要检查是否带
--log-to-stderr参数,乱码常伴随编码警告日志一起出现 - Debug Console 的字体渲染和终端是两套逻辑,若显示方块而非乱码字符,说明字体缺失,需同步配置
terminal.integrated.fontFamily
最易被忽略的一点:PowerShell 7 默认 UTF-8,但 VSCode 集成终端有时会覆盖 $OutputEncoding,尤其调用 git、curl 等外部二进制时。所以不要依赖 PowerShell 版本自动解决,chcp 65001 + PYTHONIOENCODING=utf8 双保险才是稳定方案。











