Navicat中英文切换与中文乱码排查:从界面语言到字符集编码全解析
2026/9/17 10:48:38 网站建设 项目流程

很多用 Navicat 的朋友都遇到过这种尴尬:网上下的教程、同事发的截图全是中文菜单,自己安装完打开却是满屏英文;或者反过来,公司统一装的是中文版,自己习惯了英文关键字,想切回英文界面找半天没找到入口。更麻烦的是,界面语言切来切去,连接数据库后中文数据还是乱码,这时候才意识到“中英文模式切换”这件事根本没有想象中那么简单。

这篇就用实际操作的视角,把 Navicat 的中英文模式切换从头到尾捋一遍。不只讲按钮在哪,还会把切换背后的机制、切完还是英文的漏网点、以及很多人混淆的“界面英文”和“数据乱码”这两件完全不同的事一起说清楚。不管你是刚装好 Navicat 想改成中文的新手,还是被乱码折腾过多次的老用户,这篇都能给你点实在的东西。

1. 从“界面英文看不懂”到“中文数据乱码”:先把概念分清

先说一个最常见的误区。很多人把“Navicat 中英文模式”理解为同一个东西,实际上这里藏着两个完全独立的层面:一个是程序界面本身用什么语言显示,另一个是数据库里的数据能不能正确显示中文。前者是 UI 语言,后者是字符集编码,二者没有任何直接关系。

UI 语言决定的是菜单、按钮、右键选项这些界面文字是英文还是中文。改这个纯粹是偏好问题,不影响你连哪个库、查什么数据。而数据乱码决定的是你在表格里看到的“张三”是正常汉字还是“å¼ ä¸‰”“寮犱笁”这样的天书。这个如果不对,即使界面全是中文,数据照样没法看。

我见过不少人在群里问“为什么我 Navicat 已经切成中文了,查出来的中文还是乱码”,底下还有人回答“重启一下”“换个版本”。其实这就是把两个层面搅在一起了。数据乱码是连接参数、数据库字符集、表字段字符集三方协商的结果,跟菜单显示什么语言半点关系没有。所以这篇会分成两条线来讲:前一半讲界面语言怎么切、为什么切了没效果;后一半讲数据中文模式怎么做,遇到乱码怎么一步步查。

等你把这两条线都理清了,以后再遇到“中英文切换”相关的问题,就能很快定位到底是哪一层出了问题。

2. 界面语言切换的官方入口和两个进阶方法

Navicat 切换界面语言,说起来不算复杂,但有几个细节官方文档写得不清楚,实际操作中很容易卡住。这里把三种方式都列出来,按使用场景自己选。

2.1 最简单的方式:Preferences 里的 Language 下拉框

从 Navicat 11 之后的版本开始,切换语言变成了一个正规的图形界面操作。步骤是:打开 Navicat,进入菜单栏的 Tools(工具)-> Preferences(选项),在弹出的设置窗口里找到 User Interface(用户界面)或 General(常规)分类,里面有 Language(语言)或 Interface Language 的下拉框。

选好语言后,窗口会提示你重启 Navicat 才能生效。这一步千万别忽略,我当时第一次切换时以为会立即生效,结果界面纹丝不动,还以为切换失败。后来才发现是没重启。而且需要注意,重启是彻底退出程序再重新打开,不是关掉连接窗口就完事。在 Windows 上还要确认右下角托盘区没有残留的 Navicat 图标,否则你点的“重启”只是把主窗口关掉,进程还在后台跑着,新语言自然加载不出来。

Mac 版要注意的是,Mac 版 Navicat 的语言设置入口在菜单栏的 Navicat Premium -> Preferences 下,而不是 Tools。初次使用 Mac 版的用户容易在 Tools 里翻半天找不到,这是平台习惯差异,不算 bug。

2.2 历史版本的隐藏设置:注册表与环境变量

如果你用的是老版本,比如 Navicat 8、9、10 那批,菜单里可能没有 Language 这个选项。老版本切换中英文需要改注册表或者设置环境变量。

Windows 老版本常用的做法是:Win + R 打开运行窗口,输入 regedit 打开注册表编辑器,定位到 HKEY_CURRENT_USER\Software\PremiumSoft\Navicat 相关项,找到类似 LangID 或 Language 的键值。中文是 2052,英文是 1033,修改后重启 Navicat。这个操作本身不复杂,但改注册表前一定要先导出备份,改错了 Navicat 可能起不来。

还有一个小众环境变量方式:新建一个系统环境变量,变量名指向语言代码,Navicat 启动时会优先读取环境变量来确定界面语言。这种方式在绿色版、便携版中比较常见,因为便携版不写注册表,只能靠环境变量或配置文件来记忆设置。

2.3 语言包机制:为什么有的版本没有中文选项

新版本打开语言下拉框,如果发现里面只有 English 一个选项,先别急着怪版本。Navicat 各语言版本的语言包是随安装包一起分发的,安装时如果选了自定义安装,语言包组件可能被去掉了。这种情况去官方重新运行安装程序,在组件勾选界面把对应语言包补装上就行。

还有一种情况是第三方汉化版或修改版,这类版本的语言文件被替换过,下拉框里可能显示异常或缺失。这时最快的办法不是折腾语言包,而是卸载后从官方渠道重新下载安装原版,再按 2.1 的步骤切换语言。使用修改版不仅切换语言容易出各种奇怪问题,还可能导致连接信息异常、程序崩溃等隐患。

注意:切换界面语言和安装语言包,是两个不同的操作。语言包是“有没有”,切换是“用不用”。没有语言包时,下拉框里自然不会出现对应选项。

3. 界面切完还是英文?三处漏网点排查

按上面步骤操作完,理论上重启后界面就变成目标语言了。但总有人切完发现“部分中文、部分英文”,或者连接窗口是中文了,一打开表还是英文菜单。这些漏网点分布在三个地方。

3.1 已打开窗口的缓存与视图刷新

Navicat 主界面、查询编辑器、表设计器这些窗口,在语言切换后需要完全关闭重新打开才会加载新的语言资源。如果你切换语言后只是重启了主程序,然后又用了“恢复上次会话”功能,某些窗口可能从会话缓存里直接恢复,界面还是旧语言。

解决办法是:重启后不要点“恢复会话”,手动重新打开各个功能窗口。如果还有个别窗口显示英文,把那个窗口关掉重新打开一次,基本能解决。这是一种 UI 框架的语言资源加载时机问题,不是 Navicat 特有的,很多基于跨平台框架的软件都有这个毛病。

3.2 模型、报表与外部工具窗口不随主语言切换

Navicat 不是单窗口程序,它是一套工具集,包含 Navicat Premium、Navicat Data Modeler、Navicat Report Viewer、结构同步、数据同步等模块。在 Navicat Premium 16 及之后版本中,Data Modeler 和报表设计器是独立组件,它们有自己独立的语言设置,不跟随主程序的 Preferences。

这就是“主界面已经是中文了,打开模型设计还是英文”的根本原因。需要到模型设计器自己的 Tools -> Preferences 或 Options 里单独设置语言。同样,一些通过外部工具菜单打开的插件,如 PV 工具、结构对比插件,也可能自带独立的语言配置。

3.3 操作系统的区域设置干扰

少部分 Windows 环境下,Navicat 的语言检测不仅看自己的设置,还会参考系统的区域格式。如果你的系统区域设置是非中文地区,但 Navicat 语言已经手动设为中文,一般不会受影响。反而是在系统区域设置跟目标语言不一致、Navicat 语言又处于“默认跟随系统”状态时,界面会显示成英文。

这种情况建议把 Navicat 的 Language 从 System Default 改成具体语言,不要用自动跟随。语言下拉框里的“默认”选项看起来很智能,实际使用中容易出现不可控的情况,改一次重启一次,界面就稳定了。

4. 数据层的“中文模式”:真正决定你能不能看懂数据的地方

聊完界面语言,现在进入重点。很多人切换界面语言不是为了看英文菜单,而是为了让数据库里的中文数据能正常显示。这一章要解决的问题是:连着 MySQL、Oracle、PostgreSQL,界面已经是中文了,但表里的中文全乱码,怎么办。

4.1 乱码链条的三个环节

一条数据从数据库存储到你的屏幕显示,会经历三个环节:数据库存储编码、连接传输编码、客户端显示编码。任何一环不一致都会出乱码。

拿 MySQL 举例。数据库有一个 character_set_database 参数,决定库的默认存储编码。连接时有一个 character_set_client 和 character_set_results 参数,决定客户端发过去的 SQL 和收回来结果用什么编码解释。表里的每个字段还有自己的 charset。这三个环节哪个没对齐,中文就可能出问题。用生活化的方式理解,就像三个人传话,第一个人说普通话,第二个人只会听粤语还非要用粤语复述,第三个人又只会听普通话,传到最后意思就变了。

4.2 在连接设置里固定字符集,而不是靠数据库默认

在 Navicat 里新建连接时,编辑连接窗口下方有一个“编码”或“Encoding”选项。很多人建连接时从不碰这个选项,让它保持默认。默认意味着跟随服务器设置,服务器是什么就按什么解释。问题是服务器上的全局设置未必适合每个库、每个表,一旦某个表的字符集跟全局设置不一致,连接这边就乱了。

最稳妥的做法是:编辑连接 -> 高级(Advanced)或编码(Encoding)页签,把编码明确指定为 UTF-8。然后测试连接,再打开一张有中文数据的表。如果正常了,就说明之前是连接编码和数据库存储编码不一致导致的。

MySQL 8.0 默认字符集是 utf8mb4,这点要注意,Navicat 连接选项里的“UTF-8”有时候对应的是 utf8mb3,而 utf8mb4 能表示的字符范围更广,包括 emoji 和生僻汉字。如果表里需要存 emoji,编码要选 utf8mb4 而不是 utf8。Navicat 新版连接选项里通常有 utf8mb4 选项,没有的话在连接建立后执行 SET NAMES utf8mb4 也可以。

4.3 一个连接解决不了多种字符集时,用查询串联切换

实际情况里,同一个实例下可能既有 utf8 的库,又有 gbk 的库,一个固定编码没法同时满足。这时连接选项保留默认,在查询前手动执行 SET NAMES 指令来切换会话级字符集。

比如查 GBK 的库之前执行 SET NAMES gbk,查 UTF-8 的库之前执行 SET NAMES utf8mb4。每个查询窗口的会话是独立的,互不影响。Navicat 的查询窗口支持把这段设置和业务 SQL 写在一起,也可以存成查询文件,下次直接打开执行。

这个方法比改连接配置更灵活,适合管理多个不同字符集库的运维场景。但要注意,在图形界面的表浏览模式下无法执行 SET NAMES,所以如果用表格方式直接打开中文乱码的表,还是得去连接设置里改编码,或者改用查询编辑器执行查询。

5. 一次典型的“中文乱码”排查实战:从现象到根因的完整链路

光讲理论不够,这里还原一次真实排查过程。某次接到同事求助,说 Navicat 连接某台 MySQL,表里的中文全是问号。我按下面的链路一步步查,最终定位到问题并解决。

5.1 第一步:区分“存进去就是乱码”还是“显示乱码”

首先让同事在命令行用 mysql 客户端直接查同一张表。结果命令行里显示也是问号。这说明大概率不是 Navicat 的问题,是数据存储环节就不对。再查数据库的 character_set_database,结果是 latin1,而表字段是 varchar,默认继承库的字符集,所以字段实际也是 latin1。之前程序写入时没有显式指定字符集,客户端发送的 UTF-8 字节被按 latin1 解读存储,数据在写入那一刻就已经错了。

这种情况下,光调 Navicat 编码没有用,因为脏数据已经在库里。需要先把数据修复,再调整库表字符集,最后规范写入端的连接字符集。修复过程比较繁琐,通常是把数据导出、转换、再导入,或者用 CONVERT TO CHARACTER SET 语句,具体取决于数据量和脏的程度。

5.2 第二步:确认连接通道编码协商

另一类情况是命令行查询正常,Navicat 里乱码。这说明存储没问题,问题出在连接或显示。先看 Navicat 连接属性的编码设置,把它从默认改成 utf8mb4,重新打开表。如果正常了,说明是连接编码协商失败。

Navicat 连接 MySQL 时会和服务器做字符集协商,如果连接选项没有明确指定,会使用 MySQL 的自动协商结果。在部分 MySQL 版本和驱动组合下,自动协商可能退回 latin1 或 utf8mb3,导致中文乱码。显式指定编码是绕过协商最直接的方式。

5.3 第三步:检查表字段与客户端显示

如果连接改成 utf8mb4 后还是乱码,看表的字段字符集。用 Navicat 的表设计器打开表,逐个看字符型字段的字符集。如果字段是 utf8,而连接用 gbk,显示必然乱。字段和连接不一致的情况下,以字段为准调整连接,或使用 CONVERT 函数在查询时动态转换。

客户端显示层面极少出问题,Navicat 的表格显示和结果集显示基本都支持 UTF-8,唯一的例外是某些老旧版本在大数据量滚动时中文偶发花屏,升级版本就好。

5.4 第四步:不要忽略“编辑器里输入中文”这回事

还有一个偏门但常见的坑:查询编辑器里输入中文 SQL 条件时,中文正常,但查询结果为空。这通常是编辑器的字符集和连接字符集不一致,导致中文条件在发送时变成了别的编码,匹配不上。

在 Navicat 的查询编辑器工具栏上,有时能看到当前查询的字符集标识。如果输入中文条件查不到数据,试着在查询窗口里执行 SET NAMES utf8mb4; 再重新查询。经过这一步,之前查不到中文条件的情况基本都能解决。

6. 版本差异与日常习惯:让“中英文”问题一次到位

6.1 Navicat 16、17 的语言菜单变化

Navicat 16 相比老版本,把 Preferences 里的分类重新组织过,Language 从 General 移到了 User Interface 分类下。Navicat 17 继续细化了界面设置,增加了更多显示选项。版本升级后找不到语言选项是正常现象,直接在 Preferences 窗口右上方的搜索框里输入 language,能迅速定位到对应位置。

不同版本另一个差异是首次启动语言。Navicat 从 16 开始,首次安装启动时会按操作系统的语言自动匹配界面语言,并且弹出提示询问是否使用该语言。操作系统是中文,Navicat 默认就是中文。很多用户没注意这个提示,直接点确定或跳过,后面以为 Navicat 不能切换,其实只是没找到入口。

6.2 便携版、绿色版的语言配置存在位置

便携版 Navicat 的语言配置通常保存在程序目录下的配置文件中,而非常规的注册表或用户目录。这意味着不同便携版之间不能直接互相覆盖,配置文件损坏可能导致语言选项丢失。使用便携版时,建议保留原始压缩包,语言配置混乱时重新解压一份,比手动改配置省事。

6.3 我的几个长期使用习惯

根据自己的使用经验,有几点值得长期坚持:一是新建任何连接时,第一件事就是检查编码设置,不要让它留默认;二是界面语言选定后不要频繁切换,尤其是同时开着多个连接和模型窗口时,切换语言容易造成窗口状态混乱;三是遇到乱码先判断是存储层还是连接层问题,不要盲目改库的字符集,改库的字符集是影响全局的操作,一旦库里有业务数据,操作不当可能造成大面积数据损坏。

最后一个建议是:把查询编辑器的默认字符集固定下来,不要依赖“自动检测”。Navicat 查询窗口右上角或工具栏上一般有字符集选择,设为 utf8mb4 后,日常写 SQL 和看结果都会稳定很多。保存查询文件时,也建议统一用 UTF-8 编码保存,避免换一台电脑打开查询文件时中文注释变成乱码。这种问题跟数据库无关,纯粹是文件编码不一致导致的,但表现形式跟数据库乱码一模一样,极易误判。

实际折腾过几轮之后,我的体会是:Navicat 的中英文切换本身并不难,难的是搞清楚“切换”到底影响了哪一层。界面语言是偏好问题,改一下重启就好;数据中文显示是工程问题,需要把存储、连接、显示三个环节对齐。把这两条线分开理解,遇到任何相关报错和异常,都能很快找到下手的方向。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询