vscode终端中文乱码需配置"terminal.integrated.env.windows": {"pythonioencoding": "utf8"}(小写无横线),关闭所有终端后新建才生效;禁用已弃用的terminal.integrated.encoding;code runner等插件需单独修改执行命令;powershell还需设[console]::outputencoding = [system.text.encoding]::utf8;字体须显式指定中英双语等宽字体如"cascadia code", "microsoft yahei"。

terminal.integrated.env.windows 配置 PYTHONIOENCODING
VSCode 终端显示中文乱码,files.encoding 设成 utf8 完全无效——它只管文件读写,不管终端怎么解码 stdout。真正起作用的是进程级环境变量:PYTHONIOENCODING。Windows 下必须在终端启动时就注入这个变量,否则 Python 脚本一执行,字节流就按默认 GBK 解析,中文直接变问号或方块。
打开 VSCode 的 settings.json,添加或修正这一段:
{
"terminal.integrated.env.windows": {
"PYTHONIOENCODING": "utf-8"
}
}
-
"utf-8"必须带连字符、小写;写成UTF8或UTF-8(大写 U)VSCode 会静默忽略 - 该配置仅对新启动的终端生效,已打开的终端需重启(关掉再
Ctrl + `) - 它对 Python 有效,但对 C/C++/Go 等原生程序输出无影响——那些得靠
chcp 65001
PowerShell 终端必须设 [Console]::OutputEncoding
PowerShell 和 CMD 不同:CMD 只要 chcp 65001 就能切代码页;PowerShell 默认用 UTF-16 处理内部字符串,但 stdout 输出仍可能被终端渲染层当 GBK 解码。光靠环境变量不够,必须显式设置控制台输出编码。
在 PowerShell 用户配置文件($PROFILE)里加这一行:
$OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
- 首次配置需先运行
if (!(Test-Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force }创建文件 - 改完后重启 PowerShell 终端,或手动执行该行命令验证:
[Console]::OutputEncoding.WebName应返回UTF-8 - 别信
terminal.integrated.encoding—— 这个配置项已被 VSCode 弃用,设了也不生效
terminal.integrated.shellArgs.windows 强制 chcp 65001
哪怕你配了环境变量和 $OutputEncoding,某些场景下终端仍会回退到 CP936(GBK)。最稳的方式,是在终端启动瞬间就执行 chcp 65001,把当前会话代码页钉死为 UTF-8。
在 settings.json 中加入:
"terminal.integrated.shellArgs.windows": ["-NoExit", "-Command", "chcp 65001 > nul"]
-
> nul是为了隐藏命令执行后的提示行(如活动代码页: 65001),保持界面干净 - 如果同时用了
terminal.integrated.profiles.windows自定义 PowerShell 配置,确保args里也包含这句 - 注意:此配置对 CMD 和 PowerShell 都有效,但对 Git Bash / WSL 终端无效——它们走 Unix 环境变量路径
字体不支持中文?terminal.integrated.fontFamily 得换
编码全对了,终端还是显示方块?八成是字体问题。VSCode 默认终端字体(如 Consolas)在 Windows 上不自带中文字形,遇到 UTF-8 中文就 fallback 到系统默认中文字体,但 fallback 行为不稳定,尤其在高 DPI 或远程桌面下容易崩。
在设置中搜索 terminal.integrated.fontFamily,改成明确支持中文的组合:
'Cascadia Code PL', 'Microsoft YaHei', Consolas, 'Courier New', monospace
- 优先用
Cascadia Code PL(微软开源等宽字体,含完整中文字形),备选Microsoft YaHei - 单引号必须保留,多个字体用英文逗号分隔,末尾加
monospace保底 - 改完需重启终端,字体变化不会热更新
最容易被忽略的点是:这五件事——文件保存编码、终端代码页、进程环境变量、PowerShell 输出编码、终端字体——必须全部对齐。调其中三个,剩下两个没动,乱码大概率还会在某个角落冒出来。











