麒麟系统中文乱码需先执行locale -a | grep -i 'zh_cn|gb'确认已安装目标编码,再按场景选择:全局乱码用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后重启;gb18030兼容需求则用sudo dpkg-reconfigure locales选中并设为默认;字体显示异常则执行fc-cache -f -v后注销重登录。

麒麟系统中打开文本文件、终端、WPS或网页时出现中文显示为方块、问号、空白或错位字符,说明系统字符集编码配置错误、locale未生效、字体缓存损坏或目标编码未安装。必须按实际场景选择对应路径:是全局系统界面乱码?终端命令输出乱码?还是单个文件打开乱码?不同问题需不同操作。
查看当前系统支持的中文字符集
这一步决定你后续能选什么编码,不能跳过。系统没装的编码,强行写进配置也没用,反而会导致终端无法启动或登录界面崩溃。
打开终端,执行:locale -a | grep -i 'zh_cn\|gb'
若输出为空,或只看到 zh_CN.utf8 而没有 zh_CN.GB18030、zh_CN.GBK 等,说明目标编码尚未生成,必须先安装再配置。此时直接修改 /etc/locale.conf 会失效。
永久修改系统默认字符集(推荐UTF-8)
适用于登录界面、TTY、桌面环境、WPS、LibreOffice等全局乱码。这是最常用也最稳妥的方案,优先选用 UTF-8 编码。
第一步:用管理员权限编辑系统 locale 配置文件:sudo nano /etc/default/locale
第二步:将文件内容严格改为以下两行(【不可有空格、不可加引号、不可注释】):
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
第三步:执行命令生成并激活新 locale:sudo locale-gen zh_CN.UTF-8 && sudo update-locale
第四步:重启系统。仅注销重登录无法让 TTY、GRUB、登录屏生效,必须完整重启。
启用 GB18030 字符集(兼容老旧软件)
某些国产工业软件、政务系统或旧版数据库客户端强制依赖 GB18030 编码,设为 UTF-8 反而显示异常。此方法需确认系统已支持该 locale,否则会黑屏或无法登录。
方法一:交互式启用(安全,可回退)
执行:sudo dpkg-reconfigure locales
用方向键移动到 zh_CN.GB18030 GB18030,按空格选中 → Tab 切换到“确定” → 回车 → 再次用方向键选中 zh_CN.GB18030 → 回车确认为默认。
方法二:手动配置(需前置验证)
先确认 locale -a 已输出 zh_CN.GB18030;再执行:echo 'LANG="zh_CN.GB18030"' | sudo tee /etc/locale.conf
然后运行:source /etc/locale.conf 使当前终端生效,最后重启。
【注意:银河麒麟工业版不支持通过配置文件切换 GB18030,必须走 dpkg-reconfigure 流程,否则无效】
刷新字体缓存强制生效
即使 locale 正确,WPS、LibreOffice、浏览器仍显示方块,大概率是字体索引未更新。这不是编码问题,而是渲染层断连。
在终端中执行:fc-cache -f -v
等待输出末尾出现 Finished building fonts cache. 后,立即点击右上角用户头像 → 注销 → 重新登录。不重启也可恢复多数 GUI 应用文字显示。











