不同情况下的中文乱码解决方案
使用Tomcat8即可。
如果是tomcat7是由乱码问题,解决针对get和post乱码有不同的解决方案:
GET请求:
Connector的两个配置项
1.URIEncoding
这个参数用来针对url传参方式,也就是get请求的编码类型的设定
2.useBodyEncodingForURI
一个boolean类型的参数,用来决定url传参方式的编码是否与请求体编码一致,那么请求体编码又如何获取?请看下文”POST请求“
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI = “true”/>
注意:这两个参数只是针对url传参方式,也就是get请求,选其一进行配置即可,tomcat在处理get请求时,会关注这两个参数,并按所指定的编码去解码请求,未设置,默认以ISO8859-1。
POST请求
springMVC采用默认的编码方式(ISO-8859-1)对参数进行解析,而前端页面采用的编程方式为UTF-8,导中文乱码,但是spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码。在Web.xml加上Spring编码转换过滤器filter。
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
数据库解决乱码
当解决了前端传入后台的中文字符正常显示后,也可能会出现后台写入数据库中的数据出现中文字乱码的情况,即在数据库中文变为???的形式:
这是因为数据库的编码方式也需要进行修改:
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/yanxj?useUnicode=true&characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
<property name="initialSize" value="1" />
<property name="maxActive" value="5" />
</bean>
上一篇: 心得2--JSP语法介绍,以及一个JSP页面九九表案例
下一篇: 文件下载IE中文乱码问题