苹果微软双修党福音:Navicat如何解决Linux界面中文乱码_硬核技巧

酷雪大大_3834

酷雪大大_3834

2026-04-11

1065人浏览

原创

Navicat中文乱码需按四层顺序排查:系统locale(设为zh_CN.UTF-8)、Navicat字体(选Noto Sans CJK SC等)、连接编码(强制UTF-8)、数据库字符集(改utf8mb4)。

Linux系统locale没设对,Navicat界面直接变方块

navicat for linux 本身不自带中文字体渲染逻辑,它完全依赖系统级的 lc_ctype 和 lang 环境变量来决定用哪种编码解析和显示字符。如果终端里跑 locale 输出的是 en_us.utf-8 没问题,但要是出现 posix、c 或者 zh_cn.gb18030 这类非 utf-8 的值,界面控件(比如连接名、菜单项、字段列表)就大概率乱码。

实操建议:

  • 先运行 locale 看当前设置;若 LANG 或 LC_CTYPE 不是 zh_CN.UTF-8 或 en_US.UTF-8,别改 Navicat,先修系统
  • 临时生效:在启动 Navicat 前执行 export LANG=zh_CN.UTF-8 和 export LC_ALL=zh_CN.UTF-8
  • 永久生效:编辑 /etc/locale.conf(全局)或 ~/.bashrc(用户级),写入 LANG="zh_CN.UTF-8",然后 source ~/.bashrc 并重启终端
  • 注意:Ubuntu/Debian 用户需先确认该 locale 已生成,用 locale -a | grep zh_CN.utf8 查;没有就运行 sudo locale-gen zh_CN.UTF-8

Navicat字体不支持中文,菜单和结果栏全是问号

即使系统 locale 正确,Navicat 若用了不带汉字字形的字体(比如默认的 DejaVu Sans、Liberation Sans),界面上所有中文位置都会 fallback 成 或空格——这不是编码问题,是缺字。

实操建议:

  • 打开 Navicat → 工具 → 选项 → 外观 → 字体,把「编辑器字体」和「界面字体」都改成含中文的字体,例如:AR PL ZenKai Uni、Noto Sans CJK SC、WenQuanYi Zen Hei
  • 别选 Fixedsys —— 它在 Linux 下本质是等宽位图字体,不支持 Unicode 扩展区,表情和生僻字照样崩
  • 如果系统没装这些字体,用包管理器安装:sudo apt install fonts-wqy-zenhei(Ubuntu/Debian)或 sudo dnf install wqy-zenhei-fonts(Fedora/RHEL)
  • 改完必须完全退出 Navicat(不是关闭窗口),再重新启动才生效

连接 MySQL 时编码未显式指定,查出来的中文全成乱码

这是最典型的“三层脱节”:数据库存的是 UTF-8,Navicat 界面能显示中文,但连接层用的是 latin1 握手,导致数据传输阶段就被错误转码了一次。现象是表结构看着正常,但 SELECT 结果里中文全变成 某些字 这种。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载

实操建议:

  • 右键连接 → 「编辑连接」→ 「高级」选项卡 → 找到「编码」下拉框,**强制选 UTF-8**(不是「自动」,自动有时会 fallback 到 latin1)
  • 如果「高级」里没这个选项,点开「其他选项」文本框,手动加参数:characterEncoding=utf8(MySQL 5.7+ 推荐用 characterEncoding=utf8mb4)
  • 验证是否生效:连上后执行 SELECT @@character_set_client, @@character_set_connection, @@character_set_results;,三个值都应为 utf8mb4
  • ⚠️ 注意:这个设置只影响当前连接,每个新连接都要单独配;不要指望改一次全局生效

数据库/表/字段字符集仍是 latin1,Navicat 再怎么配也白搭

Navicat 是客户端,它不能改变数据底层存储格式。如果建库时没指定 CHARACTER SET utf8mb4,或者表字段用的是 varchar(255) CHARACTER SET latin1,那 Navicat 即使用 UTF-8 连,读出来的字节流本身就已经错位了——就像拿高清解码器播一盘坏磁带。

实操建议:

  • 检查库级字符集:SHOW CREATE DATABASE your_db;,如果不是 DEFAULT CHARSET=utf8mb4,立刻改:ALTER DATABASE your_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
  • 检查表级:SHOW CREATE TABLE your_table;,若 ENGINE=InnoDB DEFAULT CHARSET=latin1,执行:ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 特别注意:已有数据在转换前务必 mysqldump 备份;CONVERT TO 会重写整张表,大表慎用
  • 新建库/表时,永远显式声明:CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

真正卡住人的从来不是某一个设置,而是系统 locale、Navicat 字体、连接参数、数据库字符集这四层里任意一层掉链子。修的时候别跳着试,按「系统 → Navicat 界面 → Navicat 连接 → 数据库结构」这个顺序逐层验证,否则容易以为修好了,其实只是掩盖了更底层的问题。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2023.06.29

2705

3

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2023.08.14

3921

10

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

2023.08.31

2971

3

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.05

967

5

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

2607

5

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

2023.10.16

2627

4

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

2023.10.16

2873

3

vb连接数据库的方法
vb连接数据库的方法

vb连接数据库的方法有使用ADO对象库、使用OLEDB数据提供程序、使用ODBC数据源等。详细介绍:1、使用ADO对象库方法,ADO是一种用于访问数据库的COM组件,可以通过ADO连接数据库并执行SQL语句。可以使用ADODB.Connection对象来建立与数据库的连接,然后使用ADODB.Recordset对象来执行查询和操作数据;2、使用OLEDB数据提供程序方法等等。

2023.10.19

2421

3

mdf文件导入数据库的方法
mdf文件导入数据库的方法

mdf文件导入数据库的方法有使用SQL Server Management Studio、使用SQL Server命令行工具、使用SQL Server Integration Services等方法。想了解更多mdf文件导入数据库的方法的相关内容,可以阅读本专题下面的文章。

2023.10.23

2613

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习