乱码问题困扰了我2天,菜的抠脚。先说说问题吧(你如果不想看这些废话就直接去下面解决),我先创建了数据库,拷贝了sql语句运行之后,Navicat正常显示,但是页面显示乱码(其实是中文latin1编码)。debug跟进程序,发现在hibernate读取数据库返回数据的时候就已经是乱码了。
分析:①数据库配置问题;
②代码出错;
③ide工具配置出错;
先看数据库,发现我配置应该是没有问题的,于是就是排查代码了这玩意,这里坑的我哭容我之后再说。
代码无非是连接加上编码,网上各种都试过了,无效。但是事后证明确实是正确的配置。下面附上我的配置
jdbcUrl= jdbc:mysql://127.0.0.1:3306/数据库?useUnicode=true&characterEncoding=UTF-8
其他的平配置正常就可以了。
将hibernate打印的sql语句复制,在工具上运行,Navicat运行一点问题没有,显示也是中文。
之后以为是ide有问题换了eclipse,jdbc连接数据库读取数据发现老问题不行中文还是乱码。
之后是怀疑idea工具出错,附我修改完的配置
发现问题还在。没办法由于其他原因反正也想重新安装新版本的数据库就卸载mysql重装了,发现问题还没有解决。
最后用Navicat按F6出现本地mysq连接页面试了试SHOW VARIABLES LIKE 'character%';发现编码集竟然不对,没看错是的,就是不对。他是latin1编码的。
解决:删库跑路,哦不删库重连接。我也不懂为什么Navicat的连接方式会影响到数据库的正常编码。但是就是这么神奇,删掉就得连接重新连接本地数据库之后F6,查看字符编码 SHOW VARIABLES LIKE 'character%'; 页面如下
在连接,ok了。虽然问题解决了。还有个小疑问问什么Navicat连接会造成数据库编码有问题?dea直接连接的明明是数据库呀!望有大佬路过指点一下!!!!
总结:造成的原因可能是Navicat重装直接使用以前配置好的连接。
有可能你真的配置好了,可能需要一点小小的删除重连。