IDEA 与 Navicat 互相中文乱码(数据库、IDEA设置都是 UTF-8)

这是一个令我难忘的故事!!!




前言

  • 这还得从昨天学习的时候说起,我是在跟着视频学习,视频中往数据库中写入的都是非中文,然后我就感觉都用 zhangsan 这个拼音了都不用中文,这里一定有坑,得尝试着踩一踩,果不其然问题来了,我在 IDEA 中写入的数据库的数据,在 IDEA 中都可以正常的写入和读取,但是当我打开 Navicat 查看刚才写入的数据,我的天,什么鬼,乱码了,当时觉得这个问题是小问题,度娘一下应该会有答案的,下面开启事故经过。
  • 事先说明一下,我用的 mysql 8.0,使用 c3p0、JDBC 进行连接的

一、产生乱码问题一般可能会出现的几种情况

1. 查看是不是是因为 IDEA 编码设置的问题【我感觉这种情况应该很少,默认的就可以】

  • 文件 - -》 设置 - -》编辑器 - -》 文本编码【都设置成为UTF-8后】- -》 应用 - - 》确定
  • 不管是不是这里出现的问题,都可以查看一下,是不是这里出现的问题,一般情况控制台输出是正常的就是没有问题,可以先忽略这个

在这里插入图片描述

2. 查看数据库的编码是否正确【这个确实有必要核对一下】

  • 我的在 Navicat 中查看的
  • 这里只要字符集是utf8的就好了utf8mb4的也是可以的,亲测可行,下面的排序规则可以不填忽略我的这个,或者很多都是 utf8_general_ci,都是可以的,这个我没有试,如果觉得是这个问题你们可以尝试,我觉得这个不是关键点,使用默认就好了
    在这里插入图片描述
  • 下面是通过 cmd 查看的数据库的设置,都是utf8没毛病啊
    show variables like ‘%char%’;
    在这里插入图片描述
  • 到了这里如果还觉得表的字段有问题,可以看一下表的字段的编码,同样没有毛病
    在这里插入图片描述

3. 查看代码中是否存在问题

  • 我的 URL 是这样的:
    jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
  • 注意:
    test:是数据库名
    serverTimezone=UTC:因为我的是 mysql 8.0 所以需要加上这个时区,不然连接会报错
  • 一般来说经过这些设置后编码都是一致的了,不应该会出现乱码【我的就很离谱,还是乱码】
  • 甚至怀疑是框架的原因,不用框架写也是会出现同样的问题

二、再说一下我这个不属于一般范畴的情况

  • 在查找问题所在的原因的时候基本大部分都是上面的情况,我已经和上面设置都相同了,但是还是不能行,都已经到了这种地步,肯定不是上面的情况出现问题了嘛,下面我们就需要换一个思路去思考这个问题了,既然两个地方的编码都是相同的UTF-8,还都是在自己的底盘查看自己弄的数据是正常的,别的就会出现乱码,这里我就感觉肯定是他们两个之间有一个出了问题嘛。
  • 在这里我要特别感谢:广州- Java-hyq这位大佬,我在群里面问这个问题的时候积极的帮助我,特别感谢,虽然最后问题也没能解决,但是大佬也帮助我进一步打开别的思路了嘛,还是收货很大的,下面是这位大佬在群里面的头像和名称的截图,没错!小白就是我
    在这里插入图片描述

从这里开始我们就换个思路想问题

1. cmd来看看,到底谁的数据才是正确的

  • 既然各自的数据编码都是属于UTF-8,那么谁出了问题也不好说,我们就找第三方在做一个证明人,这个人就是cmd
  • 操作步骤:
    1、启动 cmd,为了保险呢起见,我们先看看 cmd 的编码chcp发现不是 (65001)UTF-8 的编码,应该不会有大哥故意给自己电脑设置UTF-8的编码吧【我觉得这不是一个理智的选择】,既然不是我们就先给设置成为(65001)UTF-8 的编码chcp 65001
    在这里插入图片描述
    2、先需要把目录跳转到 mysql 安装目录下的 bin 目录 cd D:\Program_Files_self\MySQL\bin
    在这里插入图片描述
    3、然后登陆 mysql mysql -u root -p,然后输入密码
    在这里插入图片描述
    4、先你看一下 mysql 中有哪些数据库show databases;
    在这里插入图片描述
    5、然后跳转到需要跳转的数据库 use test_xy;
    在这里插入图片描述
    6、然后执行SQL语句 select * from account;
    在这里插入图片描述
  • 看到这里,有没有觉得问题变得清晰了,这不就是 IDEA 中写入的数据没有乱码,是UTF-8 嘛,反而是 Navicat 中手动添加的数据出现了乱码,这里我就感觉是Navicat 的问题,但是我并不是这么的肯定,因为比较晚了,这个问题也搞了大半天还是没有结果,我就决定今天先洗洗睡,明天上午了再看看,到底是不是Navicat 的问题
  • 当时也有的群友说得用 PowerShell()看,我也尝试了看了,和 cmd 的结果一样,操作也是相同的【还请大哥们忽略我的手残,错了很多,哈哈哈哈】
    在这里插入图片描述

2. 既然我们已经认定是Navicat 的问题,我们就对Navicat 下手

  • 第二天一早,我就开始找 Navicat 的毛病,自此期间我甚至又安装了一个Navicat,发现还是不行,排除Navicat 软件的问题
  • 然后我就继续度娘,寻找解决的方法,果真,还真就被找到了,在一个评论中,发现说Navicat 连接设置不要设置UTF-8 的编码,选择自动比较好,然后我就抱着试一试的态度,去修改了连接设置,我X,竟然真的是这个原因,成了。心中疯狂的喜悦!!!
  • 这次的坑爬的比较辛苦,收获也是很棒的,这样会让我印象很深。
  • 下面是设置步骤:鼠标右键连接名 - -》编辑连接(需要先断开连接)- -》高级 - -》编码(设置为:自动)
    在这里插入图片描述
    在这里插入图片描述

解决步骤:↑ ↑ ↑ ↑ ↑ ↑ | 对比图 ↓ ↓ ↓ ↓ ↓ ↓

可以看一下前后的对比:

解决前:

  • Navicat 中的数据
    在这里插入图片描述
  • IDEA 中的数据
    在这里插入图片描述

解决后:

  • Navicat 中的数据
    在这里插入图片描述
  • IDEA 中的数据
    在这里插入图片描述

一点点笔记,以便以后翻阅。

  • 18
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小印丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值