IDEA中连接MySQL数据库查看表信息时可能出现中文乱码问题的终极解决方案
相信看到这篇文章的各位已经被乱码折磨的体无完肤,所以长话短说。
常见的编码修改和配置一定是正确的,都是UTF-8,如下列图片所示。
-
首先是IDEA的配置
-
其次是MySQL的my.ini配置,我们在cmd查询一下
-
然后是Navicat中数据库的配置
正常来讲以上三条可以解决95%的问题,然而我之前的情况是:
IDEA中的console页面乱码
Navicat的页面正常
人傻了,debug两天没发现,后来偶然间看到一篇Navicat初始化配置的博客发现了异常:
我们在编辑链接的时候,千万千万千万千万不能把这改成65001(UTF-8)
要保持第一个选项自动自动自动自动自动
然后我们回到数据库中会发现
擦,反而IDEA和Navicat都乱码了,但别着急,这里Navicat和IDEA显示不一致的bug找到了
IDEA显示的乱码才是真正的我们常用的UTF-8编码下的文字,也就是说之前我们在Navicat看到的“汉字”其实是乱码,IDEA从头到尾显示的都是正确的,反而我们之前在Navicat看到的都是其他的编码格式下的汉字,问题本质得以发现。
那么掌握了bug的根源,这时候debug就很简单了。我们drop原来的表,create新的表,内容保持一致,查看效果。
至此,bug彻底解决!
但问题还没结束,各位做项目的开发人员或者数据库规模较大的请注意!!!!!
一旦我们确定问题是本文所提到的连接编码错误,别急着把编码方式改回自动!因为改回自动之后会把错误编码的汉字全部变成乱码,也就是说原来数据库中所有包括汉字的字段都会变成乱码!
所以我们在改动之前,先把表文件的数据和结构导出为SQL,这时候导出的SQL语句内的汉字仍然是正常的汉字,所以没有影响!
删除原来的数据库和表,直接用导出的SQL新建数据库和表,这样可以防止数据丢失,也节约了大量建表时间。