问题场景
在项目中需要在前台传中文参数到controller里,debug时发现乱码,在controller向前台传值时,如果有中文也是乱码。
解决方式一
前提:项目采用utf-8编码
a. 编辑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>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
b. 在Tomcat下的conf文件夹下找到server.xml,找到
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
添加后如下
<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
c. 重启生效
解决方式二
/**
* 前台传过来的值到controller中文乱码转码
* @param string
* @return
* @throws UnsupportedEncodingException
*/
public static String decode(String string) throws UnsupportedEncodingException {
return new String(string.getBytes("iso-8859-1"), "utf-8");
}
/**
* 后台controller传中文到前台中文乱码转码
* @param string
* @return
* @throws UnsupportedEncodingException
*/
public static String encode(String string) throws UnsupportedEncodingException {
return new String(string.getBytes("utf-8"), "iso-8859-1");
}