完美解决IDEA/MySQL/Navicat中文乱码 编码不一致 情况

完美解决IDEA/MySQL/Navicat中文乱码情况


问题描述:

昨天在将数据库数据显示在前端页面时出现了中文乱码,以为是前端页面的问题。经查证
前端页面
前端页面
yml配置文件
在这里插入图片描述

都没有问题,所以我sout打印了一下从数据库取出来的中文数据
在这里插入图片描述

发现取出来的时候就乱码了。看来问题出在数据库这边。


查看数据库:

在Navicat里新建查询

 SHOW VARIABLES LIKE 'character%'; 

结果如下
在这里插入图片描述
明显是编码问题。server、results、connection、client全是latin1。我们要将它们全部改成utf8。
我的数据库版本是5.6.43
我们找到数据库的安装路径。
在这里插入图片描述
用记事本编辑my.ini。如果没有my.ini,复制一份my_default.ini然后将它们更名为my.ini。在my.ini中添加如下代码:

[client]
default-character-set = utf8
[mysql]
default-character-set = utf8


[mysqld]
character-set-server=utf8 
collation-server=utf8_general_ci 


[mysql.server]
default-character-set = utf8

[mysqld_safe]
default-character-set = utf8

保存退出,win+R。运行services.msc
在这里插入图片描述
找到mysql,重启服务:
在这里插入图片描述


有趣的地方来了:

我再次在Navicat里检查字符编码

 SHOW VARIABLES LIKE 'character%'; 

在这里插入图片描述
结果发现它一点也没变!!!!!!

后来我又在这里折腾了好久,浪费了大量的时间,它还是没变。参考别人的建议

需要新建一个数据库,新的数据库的编码才会改变过来

我新建了一个数据库,发现还是不行。

后来突发奇想,我没在Navicat上查了,我在命令行里试试。
win+R CMD 回车
敲入:

start mysql
 SHOW VARIABLES LIKE 'character%'; 

在这里插入图片描述
嘿!!!合着已经改过来了,Navicat它在骗我,浪费了我大量的时间

Navicat和Mysql编码不一致

接下来就来到了Mysql和Navicat编码不一致的情况了。很多朋友都说要新建数据库编码才会变,之前被证实了不行

解决办法:新建连接

参考了一位网友的方法,我在Navicat里新建一个连接试试。
我最初的连接是127.0.0.1
新建连接
在这里插入图片描述
编码选择自动
在这里插入图片描述

在这里插入图片描述
输入用户名密码回车,新的连接localhost_3306被创建
在这里插入图片描述
localhost_3306和127.0.0.1都是本地连接,之前创的数据库和表都是相同的,IDEA里一开始就写的
在这里插入图片描述

所以这里大家也不用担心。
然后我们在localhost_3306这个连接里新建查询
在这里插入图片描述

 SHOW VARIABLES LIKE 'character%'; 

在这里插入图片描述
没问题了!!


最后需要注意的地方

在这里已经没有问题了,但是我再次sout时,发现输出的中文数据还是乱码。然后我打开localhost_3306中的数据库,发现localhost_3306中的表全部乱码了。虽然结构都和127.0.0.1一致,但是localhost_3306里的乱码。这里只需要重新编辑一下这些数据然后保存,sout,没问题了

在这里插入图片描述
至此乱码的问题全部解决了
总结一下我们这个问题困扰我们的几个点

  1. 数据库编码不是utf8。 参照上文,在my.ini中进行修改
  2. 设置了my.ini,但是Navicat中的编码依然没变。其实已经改变了,mysql和Navicat的编码显示不一致
  3. 在Navicat中新建数据库,编码还是不符合。参照上文,不要新建数据库,而是新建本地连接
  4. 新建本地连接后,sout依然乱码。参照上文,新连接里的数据可能乱了,重新编辑一次然后保存。再sout就不会出错了

第一次发文章,如果有问题,还请多多指教

参考:

参考的文章,直接点击链接跳转或复制下方链接
https://blog.youkuaiyun.com/TIANTIANDOUNITIAN/article/details/100763005

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值