今天在用Hibernate做项目时,遇到一个非常郁闷的问题,那就是我的前端页面与数据库本身都用UTF-8编码,然后后台接收到数据打印出来时也是使用UTF-8编码的,但是奇怪的是数据库中存放的中文记录却 总是乱码,进一步研究发现只有中文才会出现这个问题,而英文不会,后来查阅相关资料后发现,只需要在hibernate的配置文件中加入以下代码
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/questionnaire_local?useUnicode=true&characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
这里的关键是URL中要明确表明useUnicode=true&characterEncoding=UTF-8,这样一来问题就解决了