发现问题
2023超职季完成任务之后需要发送沟通豆,但是沟通豆列表页发现有乱码问题,描述的文案是放在Mysql JSON类型中的。
这个问题文字是配置在WConfig中的,用户完成任务之后先在数据库中保存一条记录,然后再调用沟通豆的下游服务进行发送。
所以这里猜测是数据库编码导致的中文乱码。
定位问题
debug,然后将包含中文的字符串进行转码结果如下,能正常展示。
直接返回内容
1.尝试修改数据库编码集为UTF8
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动奖励表'
这里数据库使用的是 utf8mb4 编码,为什么不是utf8编码,这里查了下 mysql utf8 编码集使用的是3字节 而正规的utf-8是4个字节的,mysql为了修复这个bug推出了 utf8mb4 编码集 mysql 会在以后得版本中弃用 utf8mb3,在8.0.28开始utf8对应的字符编码默认指向 utf8mb4,以前是 utf8mb3
官方链接&截图
2.JDBC驱动包的bug
然后猜测是不是json类型的问题,于是在其他的字段上加了一段中文,查询发现没有乱码。 google搜索了下,有说是 jdbc驱动的问题导致的,于是升级驱动jar版本 原来的版本
mysql:mysql-connector-java:jar:5.1.34:compile
升级之后的版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
升级完成之后重新测试--乱码解决