项目上线,遇到JQuery的ajax访问服务器时上传的中文字符乱码,但是本地项目跑的时候一切正常,搞的一头雾水,因此检查过上传的文件的格式
1、项目本身是UTF-8;
2、在jsp页面设置了UTF-8
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
3、在web.xml中也设置了相应的字符集过滤
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
最后没辙,跑去查了两边系统的编码是一致的,感觉要疯,最后敢时间,无奈的页面使用encodeURI,后台使用java.net.URLDecoder.decode(checkMode,"UTF-8");进行一个个转码。。。虽然这样解决了问题,但是心里不服气啊,为什么会出现这样的情况呢,然后今天远程服务器的时候发现服务器是tomcat7而我开发用的是tomcat8!所以问题就在这里了,在tomcat8以前默认接受数据使用的是iso-8859-1字符集,tomcat8开始默认使用utf-8,检查了下两边的tomcat果然都是默认未设置字符集的状态