zsh不能显示和输入中文的解决
zsh 无法输入、显示中文(Debian)
现象:输入中文无反应 / 输出中文方块问号、乱码。
根本三点原因:
- 系统没有生成 UTF‑8 locale(最常见)
- zsh会话内
LANG/LC_*环境变量不是UTF‑8 - 终端缺少中文字体,或者客户端终端本身编码不是UTF‑8
小提示:不一定要把系统语言改成中文,只要启用UTF‑8 locale,英文系统同样可以输入显示中文,推荐生产服务器使用
en_US.UTF‑8。
步骤1:检查当前状态
1 | locale |
charmap如果输出不是UTF‑8,说明编码环境异常。locale -a | grep UTF‑8查看系统可用locale。
步骤2:Debian生成UTF‑8 locale
1 | sudo nano /etc/locale.gen |
取消注释:
1 | en_US.UTF‑8 UTF‑8 |
保存,执行生成:
1 | sudo locale‑gen |
步骤3:zsh配置持久化UTF‑8
编辑zsh配置 nano ~/.zshrc,文件末尾加入:
1 | export LANG=zh_CN.UTF-8 |
生效:
1 | source ~/.zshrc |
步骤4:安装中文字体(显示方块问号时执行,服务器串口可跳过)
1 | sudo apt update |
容易踩坑的额外排查
- SSH远程连接:你的本地终端软件(Xshell、SecureCRT、Windows Terminal)编码必须设置为UTF‑8。服务器配置正确,但是客户端编码错,依旧乱码。
- 不要在
.zshrc写export LC_ALL=C,C编码不支持中文。 Oh‑My‑Zsh主题乱码方块:需要安装Powerline兼容字体,不是locale问题。- 如果你用
screen/tmux:tmux本身要设置set‑g utf8 on,否则内部zsh中文异常。
快速测试命令
1 | echo "中文测试" |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 崔安兵的博客!
评论

