后台常常会根据@RequestParam 或者@PathVariable 等从URL或者Form Data 获取参数数据。

当其中有中文的时候,不可避免发生了乱码。。。

【首先说明GET方法:】

  • 方法一:修改Tomcat的server.xml

因为Tomcat默认使用ISO-8859-1进行解码的。

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

添加URIEncoding="utf-8"

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
  • 方法二:手动更改
String name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
//可以写个工具类。

【其次说明POST方法:】

  • 方法一:使用Spring的字符过滤器

配置在web.xml中:

<filter>
<filter-name>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>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

要注意的是,这个过滤器一定要放在最前面。

  • 方法二:手动更改

 和GET一样。