JSP页面上的中文数据传到后台乱码处理汇总

时间:2021-09-04 16:39:44
SpringMVC框架下的web项目,JSP页面上的中文传到后台乱码的情况下,这儿汇总了五种可能出现乱码解决的情况,如果你的项目中也出现了乱码,可以尝试从以下方面进行解决(使用UTF-8的编码方式)。 1、web.xml中配置编码过滤器
<filter>
<filter-name>SetCharacterEncoding</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>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、JS页面上设置pageEncoding
<a target=_blank href="mailto:%@page language='java' import='java.util.*' pageEncoding='UTF-8'%">%@page language="java" import="java.util.*" pageEncoding="UTF-8"%</a>
3、如果使用的是Ajax进行数据传输出现乱码,对Ajax传输的数据设置编码contentType:"application/x-www-form-urlencoded; charset=utf-8":
$.ajax({
url : url,
type : "POST",
dataType : "json",
async : false,
contentType:"application/x-www-form-urlencoded; charset=utf-8",
data : $("#communication_frm").serialize(),
success : function(result) {},
error : function() {}
});
4、使用tomcat服务器的情况下,上面几点都设置好了还是乱码就去查看tomcat配置文件web.xml(路径:tomcat/conf/web.xml),设置tomcat的编码过滤器为UTF-8,配置位置如下:
  <!-- A filter that sets character encoding that is used to decode -->
<!-- parameters in a POST request -->
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
5、tomecat服务器的配置文件中,设置编码过滤器前面有一行注释,parameters in a POST request,从我遇到的实际情况来看确实是这样的,这个过滤器只对post方式发送的请求中的数据有效,而对get请求中的参数是无效的。 get请求方式发送的中文数据(url拼接)在前面都设置好后还会乱码的话,进入tomcat的配置文件server.xml(路径:tomcat/conf/server.xml),给
<Connector executor="tomcatThreadPool"
port="1522"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
添加URI的编码属性:URIEncoding="UTF-8"即改为:
<Connector executor="tomcatThreadPool"
port="1522"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>

      目前我所遇到的乱码情况用这几种方式都能解决,如果还有其他情况欢迎告知补充。