Linux下Navicat 15界面发虚和中文乱码主因是系统locale缺失(zh_CN.UTF-8未启用)及编辑器未配置支持中文的等宽字体(如Noto Sans Mono CJK SC),需生成locale、设LANG与LC_ALL、手动指定字体并完全重启Navicat。

Linux 下 Navicat 15 界面发虚+中文乱码,90% 是系统 locale 缺失 + 字体未正确绑定导致的,不是软件 bug,也不用改源码或装破解补丁。
为什么启动后菜单/按钮全是方块或模糊字?
Navicat 15 Linux 版依赖系统级 zh_CN.UTF-8 locale 渲染 UI,如果没启用,Qt 库会 fallback 到无中文支持的字体(如 DejaVu Sans),结果就是:界面文字发虚、中文显示为空白/方块、甚至按钮文字错位。
- 先确认 locale 是否就绪:
locale -a | grep zh_CN.utf8—— 若无输出,说明根本没生成 - 生成它:
sudo locale-gen zh_CN.UTF-8(Ubuntu/Debian)或sudo localedef -c -i zh_CN -f UTF-8 zh_CN.UTF-8(CentOS/RHEL) - 重启终端,再运行
locale,确保LANG=zh_CN.UTF-8已生效 - 别只改
start_navicat里的export LANG="zh_CN.UTF-8"—— 这只能救编辑器,UI 层仍可能崩
编辑器里中文注释显示为方块,但新建查询正常
这是典型「字体不支持等宽中文字形」问题。Navicat 默认用英文等宽字体(如 Monospace),在 Linux 上无法 fallback 到中文字体,直接渲染失败。
- 必须手动指定一个支持中文的等宽字体:
AR PL UKai CN(开源)、Noto Sans Mono CJK SC(推荐)、或WenQuanYi Micro Hei Mono - 路径:
工具 → 选项 → 编辑器 → 编辑器字体,选中后点「确定」 - 关键动作:完全退出 Navicat(不只是关窗口),再重新启动 —— Qt 缓存字体映射,热加载不生效
- 避免用
SimSun或AR PL ZenKai Uni:前者非等宽,SQL 对齐错乱;后者部分字形缺失,仍出方块
右下角显示 UTF-8,但打开本地 .sql 文件还是乱码
这不是字体或 locale 的锅,是 Navicat 自动编码检测失败。它把 UTF-8 无 BOM 的文件当成了 ISO-8859-1 或 GBK 解析,字节流一错,全盘皆输。
- 右键已打开的 SQL 标签页 →
重新以编码打开…→ 依次试UTF-8和GBK,哪个显示正常就选哪个 - 确认后,点击右下角编码标识旁的
Save with Encoding→ 保存为UTF-8(无 BOM) - 永久预防:
工具 → 选项 → 常规 → 默认编码设为UTF-8,并勾选新建查询时使用默认编码 - 别信「自动检测」:Navicat 对无 BOM UTF-8 的识别率在中文 Linux 环境下低于 50%,必须手动干预
最易被忽略的一点:start_navicat 脚本里改了 LANG,但没同步改 LC_ALL。某些发行版(如 Arch)会优先读 LC_ALL,若它仍是 C 或空值,UI 依旧发虚。保险起见,在脚本开头加一行:export LC_ALL=zh_CN.UTF-8。


















