终端中文乱码主因是编码、字体、脚本环境三者不一致:cmd默认GBK需切UTF-8(chcp 65001),字体须显式配置中文字体如'Microsoft YaHei Mono',Python/Node.js脚本需设PYTHONIOENCODING=utf-8,Git Bash需关core.quotePath。

终端显示中文是方块或问号,先确认系统默认编码
VSCode 集成终端乱码,80% 情况是终端进程(如 cmd.exe、powershell.exe 或 bash)本身没用 UTF-8 编码启动,VSCode 只是“照搬”了它的输出。Windows 默认的 cmd 用的是 GBK(代码页 936),而现代项目文件名、日志、脚本常含 UTF-8 字符,直接冲突。
验证方式:在集成终端里运行:
chcp,若输出
活动代码页: 936,就是根源。
- Windows 用户优先改用
powershell或Windows Terminal,它们默认支持 UTF-8 - 若必须用
cmd,可在 VSCode 设置中强制启动时切换编码:terminal.integrated.profiles.windows
里为cmd添加/c chcp 65001 >nul && cmd - WSL 用户检查
locale输出,确保LANG是en_US.UTF-8或zh_CN.UTF-8,不是C或空
VSCode 终端字体不支持中文,导致显示为空格或小方块
即使编码正确,如果终端用的等宽字体(如 Consolas、Monaco、Fira Code)本身不含中文字形,VSCode 就会 fallback 到系统默认中文字体——但 fallback 行为不稳定,尤其在连字(ligature)开启时容易断掉。
解决办法是显式指定一个「支持中文的等宽字体」,并在字体列表中把中文字体放在英文之后,避免覆盖英文渲染效果:
- 打开 VSCode 设置(
Ctrl+,),搜索terminal integrated font family - 填入类似:
'Fira Code', 'Microsoft YaHei Mono', 'SimSun', 'Consolas'
- 注意单引号包裹、逗号后带空格、中文字体名用全称(
Microsoft YaHei Mono比YaHei更可靠) - 重启终端(关掉所有终端页签再新开),不要只 reload 窗口
Python/Node.js 脚本输出乱码,和终端设置无关但表现一样
这类问题常被误判为终端配置问题,实际是脚本运行时环境没识别到 UTF-8。比如 Python 在 Windows 上调用 subprocess 执行命令,或 Node.js 的 child_process 启动子进程,底层仍可能走系统默认编码。
- Python 脚本开头加:
import io, sys; sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
- Node.js 启动时加
--icu-data-dir或设置环境变量:set PYTHONIOENCODING=utf-8
(Windows)或export PYTHONIOENCODING=utf-8
(macOS/Linux) - VSCode 的
launch.json中调试 Python 时,可加"env": {"PYTHONIOENCODING": "utf-8"}
Git Bash 终端中文路径显示为八进制转义,其实是 Git 自身配置问题
Git Bash(msys2)默认对路径做转义,例如 中文.txt 显示成 \344\270\255\346\226\207.txt,这不是 VSCode 或字体的问题,而是 Git 的 core.quotePath 开启了。
关闭它即可还原正常显示:
- 在 Git Bash 中运行:
git config --global core.quotePath false
- 或者在 VSCode 集成终端中(确保是 Git Bash)执行同命令
- 该设置只影响路径显示,不影响文件内容读写









