终端显示方块或问号需先区分层级:???是代码页未识别字节导致占位,□□□是编码正确但字体缺失字形;验证用echo "你好",显示□□说明字体问题,???则属编码错配。

终端输入中文显示为方块或问号?先确认是哪一层的问题
??? 和 □□□ 不是一回事:前者是终端代码页根本没认出字节,直接替换成问号;后者是字节流解码正确,但字体里没有对应字形。VSCode 终端输入中文时显示方块,90% 是 terminal.integrated.fontFamily 没配中文字体,或者配了但顺序错——比如把 "Microsoft YaHei" 放在西文字体前面,导致所有字符强制走微软雅黑,英文连字失效、符号变细甚至缺失。
验证方式很简单:在终端里输入 echo "你好",如果显示 □□,说明编码没问题(UTF-8 已生效),纯属字体兜底失败;如果显示 ???,那才是编码层没打通。
Windows 下 PowerShell / CMD 输入中文乱码的根治配置
PowerShell 默认输出用 UTF-16,但输入法打出来的中文字节可能被当前代码页(如 936)截断。必须显式统一为 UTF-8:
- 在
settings.json中添加:"terminal.integrated.profiles.windows": { "PowerShell": { "source": "PowerShell", "args": ["-NoExit", "-Command", "chcp 65001 > $null"] }, "Command Prompt": { "path": "cmd.exe", "args": ["/K", "chcp 65001"] } } - 同时补上环境变量:
"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8", "NODE_OPTIONS": "--no-warnings"},否则 Python/Node 启动后仍可能沿用旧代码页 - 别漏掉
-NoExit或/K,否则终端启动即退出
Linux/macOS 终端输入中文异常:LANG 和字体要双管齐下
Linux 用户常忽略系统级编码设置,只改 VSCode 配置。结果是编辑器里中文正常,终端一输就乱:
- 确保 shell 启动时加载了 UTF-8 环境:
export LANG=zh_CN.UTF-8写进~/.bashrc或~/.zshrc,然后source它 -
terminal.integrated.fontFamily必须包含中文字体,且西文优先,例如:"Fira Code", "Noto Sans CJK SC", "sans-serif"—— macOS 推荐用PingFang SC,比Heiti SC渲染标点更稳 - WSL2 用户额外检查:
echo $TERM应为xterm-256color,若被/etc/profile覆盖成linux,中文输入会失焦
输入法快捷键冲突导致“按了没反应”?不是终端坏了
Ctrl + ` 唤不出终端?大概率是搜狗、微软拼音把该组合设为中英文切换键,事件根本没传给 VSCode。这不是编码或字体问题,是输入法劫持:
- 临时验证:用
Ctrl + Shift + P→ 输入Terminal: Toggle Terminal,能弹出就说明终端服务完全正常 - 长期解决:进输入法设置,把中英文切换快捷键改成
Ctrl + Space或其他不冲突组合 - Linux 用户若用 fcitx5,卸载
fcitx5-chinese-addons(已知重复输出 bug),换用fcitx5-rime,简体切换用F4
字体和编码配置可以一次写对,但输入法快捷键冲突往往被当成“VSCode 抽风”,反复重启无效——它压根没收到你的按键。











