最近写一个项目的时候,突然老司机居然被编码的问题给浪费了一个小时,记录一下避免以后的小伙伴也遇到。
spring mvc里面处理get请求与post请求的编码方式有两种,第一种是post,设置为utf-8在web.xml中直接设置:
<filter>
<filter-name>Set Character Encoding</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>
第二种get请求解决方案,需要在tomcat下server.xml配置:
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
关键属性为:useBodyEncodingForURI="true" URIEncoding="UTF-8"
这样既可解决spring mvc 中 post请求提交中文乱码 和 get请求,ajax请求地址栏中文乱码的问题。