windows terminal中文乱码需同步解决utf-8编码与中文字体问题:先在配置文件args中添加chcp 65001命令确保代码页为65001,再将font face设为jetbrains mono nerd font等明确支持cjk的字体,并关闭连字选项,最后通过environmentvariables设置pythonioencoding=utf-8等环境变量以保障脚本输出一致。
windows terminal 中中文显示方块或乱码,本质是编码不匹配和字体不支持两个问题叠加造成的。单独改编码或换字体都不够,必须同步解决。
确认并统一终端编码为 UTF-8
即使界面看起来正常,底层代码页不对,中文输入输出仍会出错。
- 打开 Windows Terminal,新建一个 PowerShell 或 CMD 标签页,先运行
chcp查看当前代码页:输出活动代码页: 65001才表示 UTF-8 已生效;若显示936,说明还没对上。 - 在 Windows Terminal 设置(
Ctrl + ,)中,找到你使用的配置文件(如PowerShell或Command Prompt),在args字段里加入启动命令:"args": ["-NoExit", "-Command", "chcp 65001 > $null"]
或对 CMD:"args": ["/c", "chcp 65001 > nul && cmd.exe"]
这样每次新开标签页都会自动切换编码,且隐藏提示行。 - 更彻底的做法是启用系统级 UTF-8:控制面板 → 区域 → 管理 → 更改系统区域设置 → 勾选“Beta 版:使用 Unicode UTF-8”,重启电脑。这会让所有控制台默认用 65001,但需注意老旧工具兼容性。
指定支持中文的等宽字体
编码正确但字体不含中文字符,就会显示为空格或小方块——这是常见却被忽略的原因。
- 进入 Windows Terminal 设置 → 在左侧选择“外观” → 找到 Font face 选项。
- 不要用默认的 Consolas 或 Cascadia Code(部分版本未内置中文),改用明确支持 CJK 的字体,例如:
- JetBrains Mono Nerd Font(推荐,开源、清晰、带编程符号)
- Cascadia Code PL(微软官方带中文补丁版)
- Microsoft YaHei Mono(需手动安装,系统自带微软雅黑的等宽变体)
- 确保勾选 Use font ligatures 处于关闭状态——开启连字后,某些字体 fallback 机制会失效,反而导致中文渲染失败。
补充关键环境变量(针对脚本类输出)
终端本身能显示中文,不代表 Python、Node.js、Java 等程序也按 UTF-8 输出。它们可能仍走系统默认 ANSI 编码。
- 在 Windows Terminal 设置中,找到
terminal.integrated.env.windows(VS Code 用户常设,但 Windows Terminal 也可通过 profile 的environmentVariables配置),添加:"PYTHONIOENCODING": "utf-8"
或对 Java:"JAVA_TOOL_OPTIONS": "-Dfile.encoding=UTF-8"
- 验证是否生效:在终端中运行
python -c "import sys; print(sys.stdout.encoding)",输出应为utf-8;否则说明运行时没读取到环境变量。
检查并避免字体 fallback 失效
Windows Terminal 默认只用单一字体渲染,不会像浏览器那样自动 fallback 到系统中文字体。如果选的字体本身没嵌入汉字,就必然显示方块。
- 临时测试:在终端里执行
echo 中文测试,若显示 □□□,不是编码问题,就是字体问题。 - 可安装 Nerd Fonts 并选择带
Chinese或CJK标注的版本(如JetBrainsMono Nerd Font Complete Mono Windows Compatible.ttf)。 - 安装后,在字体列表中手动选择它,并重启 Windows Terminal(仅重载设置不够,需完全重启进程)。











