ssh整合ajax提交表单中文乱码问题详解!

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的编码格式设置一下。

猜你喜欢

转载自blog.csdn.net/m0_37852553/article/details/78276929