Mac 下 MySQL 5.7 连接 navicat 中文乱码问题终极解决方案

本文介绍在Mac环境下使用MySQL5.7时遇到的中文乱码问题及解决过程,包括分析原因、检查IDE设置、调整MySQL配置及navicat连接参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mac 下 MySQL 5.7 连接 navicat 中文乱码问题终极解决方案

前几天购入mbp不久,准备安装mysql和其他web服务进行web程序开发,结果安装了mysql后运行了以前的一个web程序,在网页里中文显示乱码,但是在navicat里显示中文确实正常的,于是,踩坑之旅由此开始。。。


分析原因

首先,以前在Windows 10系统下,使用的MySQL5.5,navicat导入sql文件后,程序运行没有问题,网页现在中文显示正常,于是可以确定程序源码和数据库sql文件没有问题,于是猜测问题可能出在IDE或MySQL上。

寻找IDE MyEclipse问题

  1. jsp页面
    确认jsp页面头部已有

        <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8"%>

    <meta>层已包含

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  2. jdbc dao层
    确保数据库连接

    String url = "jdbc:mysql://localhost:3306/exampleName?Unicode=true&characterEncoding=UTF-8"
    

    里包含Unicode=true&characterEncoding=UTF-8

保证以上两点都已修改完成后发现乱码问题还是存在,于是在service层调用dao层代码查询数据库数据后在console里输出,发现输出的乱码与网页上的一致,于是判断乱码问题出在MySQL,与IDE无关。

寻找MySQL问题

百度发现网上解决办法已经非常详细,找到一个个人感觉比较详细的解决方案 http://www.ha97.com/5359.html 链接里由于是在Linux系统,与mac 的os系统大同小异,所以只需改动少部分就行,其中第二步中的my.cnf文件在MySQL5.7下是没有的,需要在/usr/local/mysql/support-files 中找到my-default.cnf(而在MySQL5.5/5.6下在/usr/local/mysql/support-files 中任意找一个.cnf文件)复制到/etc 文件夹下,改成my.cnf,然后进行修改。

但是问题来了,修改完my.cnf文件,字符集全部变成utf8后!字符集全部变成utf8后!字符集全部变成utf8后!(重要的事情讲三遍)发现还是中文还是乱码。

于是在终端打开mysql,进行测试,执行查询结果中文还是乱码,百思不得其解。由于前面都是直接在navicat里直接建表,运行sql文件,突然想如果直接在终端里执行插入语句,是否能成功。说干就干,结果发现如果直接在终端里插入的中文数据在终端里查询显示正常,到navicat里查看结果是???后面直接在终端里运行sql文件,导入数据,最终发现在网页里中文显示已经正常,终端查询中文也正常。

最终发现是navicat出现了问题

寻找navicat问题

百度一波发现有说mac下navicat新建连接是编码选择auto而不是utf8即可,一试,果然可以,但是还是不清楚为什么mac下的navicat跟Windows下不一样,这个问题是比较奇葩。

至此,乱码问题已解决。

### Navicat 中文乱码解决方案 Navicat 出现中文乱码的原因通常与字符编码设置不一致有关。以下是针对该问题的具体分析和解决方法: #### 1. **确认 MySQL 数据库的字符集** 确保数据库、表以及字段都设置了统一的字符集,推荐使用 `utf8mb4` 或者 `utf8` 编码[^1]。可以通过以下 SQL 查询当前数据库的字符集配置: ```sql SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%'; ``` 如果发现字符集不是 UTF-8,则可以修改全局变量或者通过创建新表时指定字符集来调整。 --- #### 2. **调整 Navicat连接字符集** 在 Navicat 连接属性中手动设定字符集为 `UTF-8`。具体操作如下: - 打开 Navicat 并编辑目标连接; - 转到高级选项卡,在“字符集”下拉菜单中选择 `utf8` 或 `utf8mb4`[^2]。 此步骤可防止 Navicat 使用默认 GBK 字符集解析数据而导致乱码。 --- #### 3. **修改 MySQL 配置文件 (my.ini)** 对于长期存在的乱码问题,建议从服务器端入手解决问题。按照以下方式更新 MySQL 配置文件中的字符集参数[^3]: - 定位 MySQL 安装路径下的 `my.ini` 文件; - 添加或修改以下内容至 `[mysqld]` 和 `[client]` 部分: ```ini [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4 ``` 保存后重启 MySQL 服务使更改生效。 --- #### 4. **处理已有的乱码数据** 即使解决了新增记录的乱码问题,之前存储的数据仍可能出现不可逆损坏的情况。尝试执行以下修复语句恢复部分受损数据: ```sql ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; UPDATE table_name SET column_name = CONVERT(BINARY CONVERT(column_name USING latin1) USING utf8mb4); ``` 注意备份原始数据以防万一。 --- #### 5. **导入导出时保持一致性** 当利用 Source 命令或其他工具迁移脚本时,请务必保证源文件采用相同编码格式(如 UTF-8)。否则即便本地环境正常也可能因外部输入引发新的混乱状况。 以上措施综合应用能够有效缓解乃至彻底消除 Navicat 下遇到的各种形式的汉字显示异常情况。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值