1、前台有没有乱码,如果没有,查看传递参数层有没有乱码【我得到的结果是没有】
2、jsp页面传递参数到后台代码中,看到参数是否为中文【有乱码,为一堆问号???】
解决方案:
(1).通过GET方式传参,通过new String(request.getParameter("").getBytes("ISO-8859-1"),"UTF-8"); 的方式转换为需要的编码,如UTF-8等
(2).通过POST方式传参,通过声明request.setCharacterEncoding("UTF-8");的方式声明编码类型来解决。
【注意前端jsp的提交方式post或者get要与以上解决方案对应】
除此之外还有 tomcat 配置,位置 tomcat->conf->server.xml,加入URIEncoding="utf-8"
- <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443"
- URIEncoding="utf-8"/>
位置 tomcat->conf->web.xml 放开注释的过滤器
- <filter>
- <filter-name>setCharacterEncodingFilter</filter-name>
- <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- <async-supported>true</async-supported>
- </filter>
- <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>
- </filter>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
3、再来查看是否是数据库本身的问题,手动插入一句有中文内容的语句,看数据库中是否有乱码。如果有
解决方案:修改数据库的编码方式为utf-8,还有表的编码方式是否也为utf-8。
4、以上都没有问题,
很可能hibernate的问题
hibernate连接mysql,在hibernate.cfg.xml加上.:
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">UTF-8</property>
如果用spring配置文件:
有两种方法
1、直接写到applicationContext.xml中(加上
useUnicode=true&characterEncoding=utf8):
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost/tevaluation?useUnicode=true&characterEncoding=utf8"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
2、写到database.properties中,由applicationContext.xml调用
database.properties文件中如下(加上useUnicode=true&characterEncoding=utf8):
mysql.driverclass=com.mysql.jdbc.Driver
mysql.jdbcurl=jdbc:mysql://localhost:3306/tevaluation?autoReconnect=true&useUnicode=true&characterEncoding=utf8
mysql.user=root
mysql.password=123456
applicationContext.xml文件中配置如下:
<bean id="config"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:database.properties</value>
</list>
</property>
</bean>
<!-- 获取数据源 --> <!-- 创建数据源 commons-dbcp.jar; commons-pool.jar包-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${mysql.driverclass}</value>
</property>
<property name="url">
<value>${mysql.jdbcurl}</value>
</property>
<property name="username">
<value>${mysql.user}</value>
</property>
<property name="password">
<value>${mysql.password}</value>
</property>
</bean>