麒麟系统菜单栏中文显示方块、问号或空白,主因是字体缓存损坏、.desktop文件编码非utf-8、字体回退链缺失或locale未注入;需依次执行fc-cache -f -v并注销重登、转码.desktop文件为utf-8、配置fontconfig优先使用wenquanyi micro hei、确保/etc/environment中设lang=zh_cn.utf-8且重启dbus。

麒麟系统安装软件后菜单栏文字显示为方块、问号或空白,说明桌面环境未能正确加载中文字体或应用未继承系统字体配置,常见于WPS、LibreOffice、JetBrains系列等第三方GUI应用启动器项。
检查并重建系统字体缓存
字体缓存损坏是菜单乱码最常见原因,即使已安装中文字体,fontconfig索引未更新也会导致.desktop文件中的中文Name字段无法解析。
打开终端,执行:fc-cache -f -v
等待输出末尾出现Finished building fonts cache.字样。这一步强制重扫/usr/share/fonts/和~/.local/share/fonts/下所有字体,生成新的fonts.cache-*文件。
【必须重启图形会话】仅刷新缓存不够——GNOME/KDE的菜单服务(如gnome-shell或plasma-desktop)在登录时读取一次字体映射表,不重启不会重新加载。点击右上角用户头像→“注销”,再重新登录。
修正.desktop文件的编码与字体回退链
部分软件(尤其是非麒麟官方源安装的deb包或tar.gz解压版)自带的.desktop启动项使用GBK或GB2312编码保存中文名称,而GNOME默认只按UTF-8解析,导致显示异常。
方法一:手动转码修复
定位对应.desktop文件,通常在/usr/share/applications/或~/.local/share/applications/中,例如WPS可能是wps-office-wps.desktop。
用gedit以UTF-8编码重新打开该文件,复制Name=后的中文内容→新建空白文档→粘贴→另存为UTF-8格式→替换原文件。注意不要改动Exec、Icon等其他字段。
方法二:强制指定字体回退策略(适用于Qt/KDE应用)
编辑~/.config/fontconfig/fonts.conf(若不存在则新建),在<match target="pattern"></match>区块内插入:
<edit name="family" mode="prepend" binding="same"><string>WenQuanYi Micro Hei</string></edit>
保存后再次运行fc-cache -fv,该配置让所有匹配sans-serif的应用优先调用文泉驿微米黑,避免回退到无中文支持的DejaVu Sans。
验证并注入系统locale环境变量
某些打包粗糙的软件(如Oracle JDK附带的runInstaller、旧版Eclipse)在生成菜单项时未读取系统locale,而是硬编码LANG=C,导致.desktop中Name字段被忽略。
第一步:确认当前系统locale生效状态
终端执行locale,输出中LANG和LC_ALL必须为zh_CN.UTF-8。若显示LANG=C或为空,说明环境未正确继承。
第二步:注入全局环境变量
编辑/etc/environment(需sudo权限),追加两行:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
第三步:重启dbus用户会话使变量生效
执行systemctl --user restart dbus,然后注销重登。GNOME Shell会重新读取环境变量,并传递给所有通过D-Bus注册的菜单项。











