1.我们在使用spring的过程中,常常会在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>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.但因为tomcat处理get请求和post请求的机制不相同,所以上述解决方案只能够解决Post请求的编码问题,而get请求产生的编码问题则需要使用以下方案:
1)找到tomcat的配置文件server.xml
2)将
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
修改成
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
注:如果使用的是eclipse集成的tomcat,那么配置文件的位置在eclipse工作空间中,Servers文件下,如图
3.上述2方案能够解决普通的get请求编码问题,但是对于ajax请求产生的编码问题,则需要 将useBodyEncodingForURI="true"修改成useBodyEncodingForURI="UTF-8"(网上看到的方法,未亲自验证)