项目我搭建好了,对dao层进行单元测试的时候,插入表中的中文始终是乱码的,MySQL服务器字符集设置为utf8了,数据库和表也设置为utf8了,jdbc连接也设置为utf8,还是乱码,始终找不到原因,无意中在Navicat查询窗口中执行了show variables like 'char%',发现和我在cmd命令窗口执行的结果不一样。
我在cmd中使用命令show variables like 'char%'查询数据库字符集设置为:
然而在Navicat中执行上述命令,得到结果不一致,
问题找到了,就解决:
在Navicat中执行如下命令,问题得到解决,我那个去~~~
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
然而,然而 还没有完。我把Navicat关闭后再打开,再在Navicat执行show variables like 'char%',居然又变回图2的结果了。
原因:Navicat在创建数据库后,字符集就不会变化了,即使用了上述三个命令,重启后会重置。
措施:将数据备份,重新创建数据库(前提是已经对Mysql的字符集进行了更改),我是把Navicat卸载了重新搞的。
问题真的解决了。