Navicat Linux 中文显示方块或问号的根本原因是系统缺少中文字体且未正确配置LANG环境变量。需安装文泉驿字体(如fonts-wqy-zenhei)、刷新字体缓存fc-cache -fv,并设置LANG=zh_CN.UTF-8。
Navicat Linux 中文显示为方块或问号
根本原因是系统缺少中文字体,navicat 自身不带字体,全靠系统渲染。它不会报错,只是静默 fallback 到无中文的字体(比如 dejavu sans),结果就是方块、空格或问号。
- 先确认乱码类型:如果是连接 MySQL 后查询结果里中文变
???,那是数据库编码问题,和本问题无关;这里专指 Navicat 界面菜单、对话框、字段名里的中文乱码 - 临时验证方法:在终端运行
fc-list :lang=zh,如果无输出,说明系统压根没装中文字体 - 别试图改 Navicat 的
font.conf或启动脚本加-Dswing.aatext=true—— 这些在较新版本已失效,纯浪费时间
Ubuntu/Debian 系统一键装字体
用系统包管理器装 fonts-wqy-zenhei(文泉驿正黑)最稳,兼容 Java Swing 界面,无需重启 Navicat。
- 执行:
sudo apt update && sudo apt install -y fonts-wqy-zenhei - 装完立刻生效:直接关闭再打开 Navicat,界面中文就正常了
- 如果用的是 Ubuntu 22.04+,
fonts-wqy-zenhei可能被标记为“过时”,此时换装fonts-wqy-microhei(文泉驿微米黑),命令是sudo apt install -y fonts-wqy-microhei - 别装
fonts-arphic-ukai或fonts-arphic-uming—— 它们在高 DPI 屏幕上容易发虚,且部分字符缺失
CentOS/RHEL 系统字体安装路径要对
这些系统默认字体目录是 /usr/share/fonts,但 Navicat(基于 Java)只认 /usr/share/fonts/truetype 下的 ttf 文件,放错位置白装。
- 下载文泉驿正黑 ttf:
wget https://github.com/wqy/wqy-zenhei/releases/download/release-0.9.47/wqy-zenhei-0.9.47.tar.gz - 解压后进
wqy-zenhei-0.9.47/ttf目录,把所有.ttf文件复制到/usr/share/fonts/truetype/wqy/(需先建目录) - 刷新字体缓存:
sudo mkfontscale && sudo mkfontdir && sudo fc-cache -fv - 关键点:必须用
fc-cache -fv,只用-f不够,Java 应用依赖完整的缓存重建
Navicat 启动前别漏掉 LANG 环境变量
即使字体装好了,如果系统 locale 是 C 或 POSIX,Java 仍可能跳过中文渲染路径,导致界面还是乱码。
- 检查当前 locale:
locale | grep LANG,若输出是LANG=C,就得改 - 临时修复(测试用):
LANG=zh_CN.UTF-8 navicat - 永久修复:在
~/.profile或~/.bashrc末尾加一行export LANG=zh_CN.UTF-8,然后source ~/.profile - 注意:不要写成
zh_CN.utf8(小写 utf8),Java 对大小写敏感,必须是UTF-8
真正卡住人的从来不是“装不装字体”,而是装在哪、缓存刷没刷、LANG 设没设对——三者缺一,乱码照旧。尤其是 CentOS 上少敲一个 -v 参数,fc-cache 就不真更新,看着像好了,其实没生效。

















