你这种情况不只是在Hibernate中会碰到,就是在我们现在主流的php中同样会碰到,如果你的数据库编码与页面编码不一样,就可能出现中文乱码的问题。
今天在用Hibernate向MySQL中插入数据时出现了乱码的问题,具体表现时我在插入前用utf-8打印出来中文时OK的,然后用MySQL Workbench设置成uft-8来显示从MySQL中查询出来的数据也是正确的,但是当我把代码中的数据插入数据库之后再进行查询时查询出来的就是乱码了,不知道怎么设置,因为两头utf-8都没问题,那问题肯定时出在了中间环节,也就是connect的时候,网上到处找结果终于找到了.
我们只需要在hibernate.property或者时hibernate.cfg.xml(取决于你是怎么连接数据库的)文件中进行一下设置就OK了。
原本我的连接语句是这么写的,代码如下:
- <propertyname="connection.url">
- jdbc:mysql://localhost:3306/tablename
- </property>
然后我修改成了,代码如下:
- <propertyname="connection.url">
- jdbc:mysql://localhost:3306/tablename?useUnicode=true&characterEncoding=utf8
- </property>
发现还是不行,原来是要改成这样,代码如下:
- <propertyname="connection.url">
- <![CDATA[
- jdbc:mysql://localhost:3306/tablename?useUnicode=true&characterEncoding=utf8--phpfensi.com
- ]]>
- </property>