前日朋友让我帮他解决一个乱码问题, 以前使用Hibernate+Mysql没有遇到中文乱码,很是奇怪。
系统环境为Spring2+Hibernate3+Mysql5,Mysql的connect、J是5。04版本。
网上有很多类似的解决问题的帖子,都是从驱动入手。
问题:通过Hibernate向MySQL写入中文后,通过Hibernate取回数据,在console中打印java对象显示正常。但在MySQL Query Browser中看到的是乱码,传给前端的Flex也是乱码。
原因:Hibernate的基础还是JDBC,所以一样需要设置characterEncoding!
解决方法:
在hibernate.cfg.xml中应该这样写
<property name="connection.url">jdbc:mysql://localhost:3306/yidishui?useUnicode=true&characterEncoding=UTF-8</property>
如果用hibernate.properties
#hibernate.connection.url jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
ps:处理中文的话,characterEncoding用GBK一样可以。
但字节编码问题最好的解决方法还是统一使用UTF-8!!!
这些我的同事都已经调整过了,可是还是乱码。
后来发现原来是Mysql数据库的字符集的问题,原来他设置的Mysql的字符集为拉丁文,修改为UTF8,重起服务,搞定。