终端中文显示乱码的根源是locale环境变量被设为GBK或C,修复需四步:一、用locale命令确认LANG/LC_ALL值;二、编辑/etc/default/locale改为LANG="zh_CN.UTF-8"和LC_ALL="zh_CN.UTF-8";三、执行sudo locale-gen zh_CN.UTF-8 && sudo update-locale;四、重启会话。

麒麟系统终端输入中文时显示为问号、方块或错位符号,说明输入法与终端字符编码未对齐,底层环境变量被错误覆盖,或终端模拟器未启用UTF-8渲染支持。这种情况常见于执行过非官方脚本、手动修改过shell配置、或从Windows迁移环境后。
检查并修复当前locale环境
第一步:在终端中运行locale命令,观察输出中LANG和LC_ALL的值。如果出现LANG=zh_CN.GBK或LANG=C,这就是乱码根源——GBK不被现代Linux终端原生支持,C locale则完全禁用多字节字符。
第二步:执行sudo nano /etc/default/locale,将文件内容严格改为以下两行(不能有#注释,不能有多余空格):
LANG="zh_CN.UTF-8"
LC_ALL="zh_CN.UTF-8"
第三步:保存退出后,运行sudo locale-gen zh_CN.UTF-8 && sudo update-locale。这一步必须执行,否则修改不会写入glibc语言环境数据库。
第四步:重启终端或重新登录桌面会话。不要只关闭再打开新终端窗口——旧shell进程仍持有错误的环境变量。
临时绕过问题(适用于无法立即修改系统配置时)
方法一:在当前终端会话中直接设置编码
输入命令:export LANG=zh_CN.UTF-8 → 再输入export LC_ALL=zh_CN.UTF-8 → 然后执行source ~/.bashrc(或source ~/.zshrc,取决于你用的shell)。这能立刻恢复中文输入,但仅限当前窗口有效。
方法二:通过GRUB参数强制生效(适用于登录界面/TTY也乱码)
重启进入GRUB菜单,按e编辑启动项,在以linux开头的行末尾添加空格后追加:LANG=zh_CN.UTF-8 → 按Ctrl+X启动。此操作仅本次生效,验证无误后再做永久配置。
验证终端是否真正支持UTF-8输入
打开终端,先运行echo $LANG确认输出为zh_CN.UTF-8;再执行locale -m | grep UTF-8,应返回UTF-8;最后输入printf '\U4f60\U597d',若显示“你好”而非乱码或空白,则证明终端底层已就绪。
【关键提醒】如果上述步骤做完仍乱码,请检查是否启用了第三方输入法框架(如fcitx5)但未安装对应前端模块——麒麟V10默认使用ibus,若强行切换为fcitx5却未安装fcitx5-frontend-gtk3和fcitx5-frontend-qt5,终端将无法接收中文输入事件。
修正bash/zsh配置文件中的硬编码污染
有些用户为兼容旧脚本,在~/.bashrc或~/.zshrc里写了类似export LANG=zh_CN.GBK的语句。这类行会覆盖系统级locale设置,且优先级更高。
第一步:运行grep -n "LANG=" ~/.bashrc ~/.zshrc 2>/dev/null,定位所有显式赋值行。
第二步:用nano或vim打开对应文件,将含GBK或GB2312的export LANG=...整行删除或注释掉(前面加#)。
第三步:执行source ~/.bashrc(或source ~/.zshrc),再运行locale确认LANG已回归zh_CN.UTF-8。

















