数据库中文乱码问题

最近遇见了一个很奇怪的问题
从数据库中读取中文字符的时候,会出现乱码问题
首先一步一步检查字符编码问题
一开始数据库是用Navicat创建的
在这里插入图片描述

可以看出数据库中的格式是UTF-8
在这里插入图片描述
JDBC的连接字符集格式也是UTF-8
在这里插入图片描述
文件编码也是UTF-8
打印表中一行数据测试,原数据与打印结果如下
在这里插入图片描述

在这里插入图片描述
发现在Navicat中是正常显示,但是最后获取到的中文是呈现乱码形式
为了进一步定位问题,使用CMD查看数据库内容
发现在CMD中查看,确实是以乱码形式存储
在这里插入图片描述
使用show variables like "character%";查看编码格式,如下所示
在这里插入图片描述
使用SET NAME GBK尝试,发现仍然不行
在这里插入图片描述
最后使用CMD规定格式重新建表,发现在CMD里显示以及程序中读取都是正确结果
在这里插入图片描述
在这里插入图片描述
但是我不可能每次都需要在CMD中创建,这太繁琐,此时使用Navicat重新创建一个数据库
在这里插入图片描述
发现程序以及CMD读取都依旧乱码,此时发现用Navicat读取之前CMD创建的数据库,中文也是乱码
在这里插入图片描述
问题好像慢慢地开始明朗化了,此时在Navicat中输入show variables like 'char%'
在这里插入图片描述
发现在CMD中显示的UTF8不同,这里是latin1,使用SET NAMES UTF8再查看一次
在这里插入图片描述
以为万事大吉,重新插入一条记录,读取依旧乱码,原因可能是Navicat的字符集无法修改,因为我重新启动了一次发现没有变化。
最后无奈,将编码方式从UTF-8改为自动,使用SET NAMES UTF8再查看一次
在这里插入图片描述
此时能够正常显示插入的中文,我不理解为什么,不信邪,又重新安装了一次,但是还是用UTF-8编码却实际是latin1,弄了一天最后还是只能用自动来解决,具体原因目前依旧没有得到解释,希望有懂哥看到了能教我一下。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值