Ajax返回乱码

1.关于JSP页面中的pageEncoding和contentType两种属性的区别:

  pageEncoding是jsp文件本身的编码,contentType的charset是指服务器发送给客户端时的内容编码,JSP要经过两次的“编码”,

   第一阶段:jsp编译成.java文件会用pageEncoding,

   第二阶段:从源码.java到字节码.class会用utf-8至utf-8,

  第三阶段就是由Tomcat出来的网页, 用的是contentType。

2.全部用UTF-8

resp.setHeader("Content-Type", "text/html;charset=UTF-8"); 

3.tomcat 目录下 conf/server.xml文件

字符编码解决方案 :<Connector port="80" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"useBodyEncodingForURI="true" /> 

 

useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码,不同的页面可以有不同的重新编码的编码。

另外还可以设置URIEncoding="指定编码",但不是很好的方法,如果tomcat有多个项目,每个项目编码不同,则行不通。

   URIEncoding和useBodyEncodingForURI区别是,URIEncoding是对所有GET方式的请求的数据进行统一的重新编码,而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码,不同的页面可以有不同的重新编码的编码。

原文地址:https://www.cnblogs.com/yuyutianxia/p/3286366.html