VSCode终端中文乱码需在Shell层和环境变量上解决:先运行chcp 65001验证,再在settings.json中配置"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"},并设置支持中文的等宽字体链,修改后须关闭终端重开。

VSCode里设了中文字体、改了UTF-8,终端还是打印问号或方块——这不是设置没生效,而是你动错了地方。终端乱码和编辑器字体/文件编码完全无关,必须在Shell层和环境变量上动手。
终端输出中文乱码,chcp 65001 是最直接验证手段
Windows下终端乱码,90%是因为当前代码页不是UTF-8。PowerShell或CMD默认用CP936(GBK),而Python/C++程序按UTF-8输出,二者对不上就崩。
- 在VSCode集成终端里直接运行
chcp 65001,回车后立刻生效;再跑print("中文")或echo "测试",看是否恢复 - 若提示“无效的代码页”,说明系统未启用UTF-8支持:需进「控制面板→区域→管理→更改系统区域设置」,勾选「Beta版:使用Unicode UTF-8提供全球语言支持」,重启电脑
-
chcp命令只对当前终端会话有效;关掉重开就失效,不能靠它“永久解决”
PYTHONIOENCODING=utf8 必须写进 VSCode 终端环境变量
即使 chcp 65001 成功,Python仍可能按系统locale输出GBK字节,尤其在调用subprocess或print含中文字符串时。这时得强制Python走UTF-8通道。
- 在VSCode的
settings.json中添加:"terminal.integrated.env.windows": { "PYTHONIOENCODING": "utf8" } - 注意:值必须是
utf8(全小写、无短横),写成UTF-8或utf8bomVSCode会忽略 - 该配置仅影响VSCode启动的终端,不影响外部PowerShell窗口;修改后需关闭当前终端,再按
Ctrl+Shift+`新开一个 - 对C/C++项目,还需额外加编译参数:
-fexec-charset=UTF-8(不是GBK),否则源码里的中文字符串字面量本身就被编译成GBK字节
终端字体链必须含等宽中文字体,且系统级要匹配
就算编码全对,终端渲染层没中文字体,照样显示方块。VSCode的字体设置只是“建议”,最终能否fallback成功,取决于系统是否真装了那个字体、以及终端仿真器是否允许调用。
- 在VSCode设置中搜
terminal.integrated.fontFamily,填入:"'Cascadia Code', 'Microsoft YaHei', monospace"
- Windows用户务必右键终端标题栏→「属性」→「字体」选项卡,手动选「Cascadia Code」或「Consolas」;只改VSCode设置不改这里,大概率失效
- macOS/Linux用户需确认iTerm2或GNOME Terminal自身已设为SF Mono SC、JetBrainsMono Nerd Font等支持CJK的等宽字体;VSCode终端只是复用宿主终端的渲染能力
- 不要用
SimSun(宋体)作终端字体——它不是等宽字体,会导致对齐错乱、光标偏移
真正卡住人的,从来不是“该设哪个选项”,而是分不清「编辑器读文件」「终端跑命令」「Shell解码输出」「字体渲染字符」这四层各自独立又互相耦合的环节。改错一层,其他三层再怎么调也没用。


















