日期:2014-05-18  浏览次数:20709 次

ajax中文乱码问题.
在ajax的请求url中参数含有中文,我利用escape(参数)来转码,在后台用java怎么解码啊?
  还有就是我想问一下,在一次web请求中有多少次编码啊,jsp中有contentType="text/html; charset=GB18030" pageEncoding="GB18030",这是对什么编码?url又是怎么编码?web服务器对请求又是怎么解码的?谁能明确的说一说,或是提供一下资料!

------解决方案--------------------
页面:encodeURI()
 后台:new String(name.getBytes("iso8859-1"),"UTF-8");
 contentType="text/html; charset=GB18030" pageEncoding="GB18030" 与gb2312相差无几
 url:iso8859-1
------解决方案--------------------
contentType="text/html; charset=GB18030" pageEncoding="GB18030",这是对什么编码?
对jsp内容,jsp生成的servlet类:response.setContentType("text/html;charset=GB18030");
url又是怎么编码?
url是通过浏览器对其编码,再通过http头文件发送客户端。一般是utf-8(火狐,ie)
web服务器对请求又是怎么解码的?
服务器也要对url编码!tomcat下,对请求也进行了编码,默认为iso-8859-1。
所以要得到正确的格式,先正确解码成字节(服务器编码:iso-8859-1),再复原客户端发送的编码格式(浏览器编码:utf-8)
new String(request.getParameter("param").getBytes("iso-8859-1"),"UTF-8")
------解决方案--------------------
function xxxx(){ 

var url='xxxx'+encodeURI(encodeURI($(xxxxxx).val())); 

------解决方案--------------------
AJAX的中文情况,默认情况下,tomcat和weblogic的get和post请求的编码方案都不一样,不过前提都是要设置request.setCharactorEncoding("UTF-8")如下面代码中,get方案是很烦琐的那种将得到的参数重新编码来实现的|new String(request.getParameter("para name").getBytes("encoding name"))|而post方案是比较简单而方便的,也提倡使用这种方式,因为可以基于filter来管理编码