ssh整合时ajax提交的form表单中文乱码,在验证用户名是否存在的时候异步请求获取到的总是乱码,
然后对此做出了排查
1.jsp的标签头
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2.整个项目的编码格式UTF-8
3.struts.xml里面配置的编码
<constant name="struts.custom.i18n.resources" value="res" />
4.web.xml里面配置的编码
<!-- 配置struts2的核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
struts.xml和web.xml两个里面的编码分别实验了一下,对ajax提交的中文都是乱码
5.在Tomcat里面的server.xml把编码改成了UTF-8。
利用request.setCharacterEncoding("UTF-8");来设置Tomcat接收请求的编码格式,只对POST方式提交的数据有效,对GET方式提交的数据无效!
要设置GET的编码,可以修改server.xml文件中,相应的端口的Connector的属性:URIEncoding="UTF-8",这样,GET方式提交的数据才会被正确解码。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
最后通过第五步,在我原先的tomcat下\tomcat\apache-tomcat-7.0.52\conf\server.xml的编码格式没有设置
添加上URIEncoding="UTF-8" 保存之后,重启服务器,乱码解决了
希望任何编码都设置的情况下别忘记把tomcat下server.xml的编码格式设置一下。