ajax 请求servlet 响应 中文乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax 请求servlet 响应 中文乱码相关的知识,希望对你有一定的参考价值。
使用ajax验证id是否重复,使用GET方式提交,提交的时候不涉及中文,请求到一个servlet上,servlet去数据库验证id是否重复,然后返回中文“id已经重复”,与数据库编码无关,在页面上显示却乱码
总之该设置的都设置了,该试的都试了:
response.setCharacterEncoding("GB18030");
response.setContentType("text/html;charset=GB18030");
java.net.URLEncode(); 也用了,tomcat编码也设置为了GB18030,浏览器也是GB18030,可是还是乱码,
到底是为什么?如何解决?
<filter>
<filter-name>encodingFilter</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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>追问
filter 设置了,
参考技术A servlet响应的结果先用java.net.URLEncoder处理一下 然后js里面再decode一下就行了追问servlet:
String str = "物料代码重复";
URLEncoder.encode(str, "GB18030");
javascript:
decode(xmlHttp.responseText);
是这样吗?我试了,还是不行
还不行?,你用utf-8编码试试。
参考技术B 在 <system.web> 节点中配置 <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> 其他地方也换成gb2312servlet请求编码与响应编码问题(编码不一致可能会导致乱码)
html中的编码
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">这里不设置成中文编码无法写中文。
jsp中的编码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
contentType="text/html; charset=UTF-8"是提供给浏览器的,pageEncoding="UTF-8"是服务器编译jsp时使用的,两者不一致可能会导致页面乱码,有时候可能不会乱码,最好保持一致。
servlet请求编码设置
请求编码设置分两种,一种是get请求,在doGet方法获取请求参数的默认编码是ISO8859-1,无法获取中文,会出现乱码问题,用request.setCharacterEncoding("utf-8");设置编码不能解决,需要在server.xml的<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>添加URIEncoding="utf-8",这样可以解决url后传中文参数问题。
另一种是post请求,在doPost方法中用request.setCharacterEncoding("utf-8");就能解决post方法的中文传参乱码问题。
servlet响应编码设置
响应编码get与post请求一样,用response.setContentType("text/html;charset=UTF-8");就可解决。
以上是关于ajax 请求servlet 响应 中文乱码的主要内容,如果未能解决你的问题,请参考以下文章
servlet请求编码与响应编码问题(编码不一致可能会导致乱码)