hibernate 连接 mysql 乱码的情况
在本地开发环境中,一切正常,部署到服务器后(windows 2003 + tomcat)含有中文的查询和表单提交都有乱码,从以下几个方面检查并解决了问题:
1、将所有jsp、js、css文件默认编码改为了utf-8,未解决问题。
2、struts2的配置文件中加入了节点:<constant name="struts.i18n.encoding" value="UTF-8" /> ,未解决问题。
3、web.xml中做如下确认和修改,未解决问题。
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
4、spring 的配置文件中,将beans.xml做如下修改(红字部分),解决问题。
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8"
/>
<property name="username" value="db" />
<property name="password" value="db" />
</bean>
解决后分析了下,应该是服务器端MYSQL的默认字符集和本地开环境不一致造成的,所以前三步的解决办法不能解决这个问题,不过一个项目中一定要保证前端到底层的编码一致,不然会很麻烦。