Windows 如何排查 Windows Terminal 字体显示乱码的故障

作者:袖梨 2026-08-11

Windows Terminal字体乱码核心在于字体名称、终端配置、系统支持三者未对齐:先据方框/图标/中文异常现象定位问题类型;再验证Nerd Fonts是否真安装且名称全匹配settings.json;最后清字体缓存、启用UTF-8编码(chcp 65001)并配置中文字体fallback。

Windows Terminal 字体显示乱码,核心问题通常不是字体没装,而是“字体名称、终端配置、系统支持”三者没对齐。排查要从现象出发,逐层缩小范围,不盲目重装。

先看现象,快速定位问题类型

打开 Windows Terminal,观察乱码具体表现:

  1. 全是方框 □□□ → 很可能是 Nerd Fonts 没装对,或终端没用上它
  2. 部分图标正常(如 Git 分支符号 ✓),部分异常(如 Python 图标 ⚙️)→ 多半是字体缓存未刷新,或字体变体(Bold/Italic)缺失
  3. 终端里正常,但 VS Code 或 WebStorm 里乱 → 问题在编辑器自身终端配置,和 Windows Terminal 无关
  4. 中文显示为问号或小方块,英文和图标正常 → 不是 Nerd Fonts 问题,是中文字体 fallback 或编码设置问题

查字体是否真装上了

别信下载页截图,要亲手验证:

  1. Win + R 输入 fonts,打开系统字体库
  2. 搜索关键词:MesloCascadiaJetBrainsMono(看你装的是哪个 Nerd Font)
  3. 找到对应字体(如 MesloLGM NFCascadia Code PL),右键 → “属性”,确认文件状态“已安装”,且“字体名称”栏显示完整名称(含 “NF” 或 “PL” 后缀)
  4. PowerShell 中也可验证:Get-ChildItem "C:WindowsFonts" | Where-Object {$_.Name -like "*Meslo*"} | Select-Object Name

核对 settings.json 里的字体名是否完全匹配

Windows Terminal 对字体名称大小写、空格、后缀极其敏感。错一个字符就失效:

  1. 打开 Terminal 设置(Ctrl + ,),切换到“JSON 模式”
  2. 找到你用的 profile(如 PowerShell 或 CMD),检查 "face"
  3. 必须和字体属性里显示的**全称一模一样**,例如:

    "MesloLGM NF"(不是 MesloLGM、不是 Meslo LG M NF)

    "Cascadia Code PL"(不是 Cascadia Code、不是 CascadiaCode PL)

  4. 如果用了 Bold/Italic 样式,也要单独配:"weight": "bold" 对应的字体文件得存在(比如 Cascadia Code PL Bold)

清缓存 + 检查 UTF-8 编码是否生效

字体名对了还乱?可能是缓存没更新,或底层编码没打通:

  1. 以管理员身份运行 PowerShell,执行:

    Remove-Item "$env:LOCALAPPDATAPackagesMicrosoft.WindowsTerminal_8wekyb3d8bbweLocalStatefontCache" -Recurse -Force

    然后重启 Terminal

  2. 在 Terminal 里输入 chcp,确认输出是 活动代码页: 65001;如果不是,说明 UTF-8 编码没启用,中文和部分 Unicode 符号会出问题
  3. chcp 返回 936,需在 settings.json 中为对应 profile 加入启动命令:

    "commandline": "pwsh.exe -NoExit -Command "chcp 65001 > $null; . $PROFILE""(PowerShell)

    或 CMD profile 里加:"commandline": "cmd.exe /k chcp 65001 > nul"

中文字体 fallback 要到位

Nerd Fonts 主要解决图标,中文显示靠系统 fallback。即使用了 Meslo,终端仍需能调出中文字体:

  1. 在 settings.json 的同一 profile 下,加一行:

    "fallbackFont": { "face": "Microsoft YaHei", "size": 12 }

    (也可换成 SimSun、Noto Sans CJK SC 等你系统里有的中文字体)

  2. 确保该中文字体已安装:同样在 fonts 文件夹里能搜到
  3. 如果连 Lucida Console 或 Consolas 都不能显示中文,说明系统级中文字体支持异常,需检查“区域设置”里是否勾选了“Beta版:使用 Unicode UTF-8”并已重启

相关文章

精彩推荐