vs code终端中文乱码根源在于windows终端未启用utf-8编码,需在terminal.integrated.profiles.windows中为powershell或cmd配置chcp 65001并重启终端,同时检查python源码编码、subprocess参数及系统locale设置。

VS Code 终端输出中文乱码的根源在哪
根本不是字体或编码设置没调好,而是终端仿真器(比如 Windows 的 PowerShell 或 cmd)本身没启用 UTF-8,VS Code 只是把底层终端的输出原样展示出来。你改了 VS Code 的 files.encoding 或 terminal.integrated.defaultProfile.windows 都不解决——因为问题不在编辑器,而在终端进程启动时的代码页(code page)。
Windows 下 PowerShell / cmd 中文乱码的修复步骤
必须让终端进程以 UTF-8 启动,且保持一致:
- 在 VS Code 设置中,打开
terminal.integrated.profiles.windows,确保 PowerShell 配置里包含"args": ["-NoExit", "-Command", "$env:PYTHONIOENCODING='utf-8'; $env:PYTHONUTF8='1'; chcp 65001"] - 如果用的是 cmd,把
chcp 65001加到args最前面(cmd 默认 code page 是 936,不手动切就永远 GBK) - 重启 VS Code 终端(不是重开标签页,是关掉所有终端再新建)——否则旧进程的 code page 不会变
- 验证是否生效:在终端里运行
chcp,输出应为活动代码页: 65001
Python 脚本 print 中文仍乱码?检查这三处
即使终端是 UTF-8,Python 运行时也可能绕过它:
- 脚本开头没加
# -*- coding: utf-8 -*-—— 虽然 Python 3 默认是 UTF-8,但某些 IDE 插件或旧环境会误判源文件编码 - 用
subprocess调外部命令时没设encoding='utf-8',导致子进程输出被当成 bytes 解码失败 - Windows 上 pip 安装包后执行脚本(如
black、flake8),它们内部可能没读取PYTHONIOENCODING环境变量,需显式加参数:python -X utf8 -c "print('你好')"
Mac/Linux 用户别跳过 locale 检查
看似不会乱码,其实隐患藏在 locale 配置里:
- 在终端运行
locale,确认LANG和LC_CTYPE是类似en_US.UTF-8或zh_CN.UTF-8,而不是C或空值 - 如果 VS Code 是从 Dock 或快捷方式启动,它可能没继承 shell 的
locale—— 改用命令行启动:code .,或在~/.zshrc里加export LANG=en_US.UTF-8 - 某些 Python 打包工具(如 PyInstaller)生成的可执行文件,默认 locale 是
C,必须运行时传参:./myapp --locale=zh_CN.UTF-8
最常被忽略的一点:VS Code 终端窗口右下角显示的编码(如“UTF-8”)只是编辑器对文本流的解码提示,它不控制终端底层的 code page 或 locale。改了那个下拉菜单,对 print 输出完全没影响。










