aiax中发送、获取数据的编码问题

方法一
//要传递的参数
   var queryString = "firstName=" + firstName + "&lastName=" + lastName
                          + "&birthday=" + birthday;    function  

//GET方式提交    doRequestUsingGET() {             createXMLHttpRequest();            var url = "GetAndPostExample?" + queryString+ "&timeStamp="                              + new Date().getTime();             xmlHttp.onreadystatechange = handleStateChange;             xmlHttp.open("GET", url, true);             xmlHttp.send(null);    }       //POST方式提交    function doRequestUsingPOST() {             createXMLHttpRequest();            var url = "GetAndPostExample?timeStamp=" + new Date().getTime();             xmlHttp.open("POST", url, true);             xmlHttp.onreadystatechange = handleStateChange;             xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");             xmlHttp.send( queryString);    }  
当在servlet接收参数时,必须要这样:
//当用POST方法时,一定要设置成utf-8,否则乱码
String firstName = new String(request.getParameter("firstName").getBytes("ISO-8859-1"), "utf-8");

// 当用GET方法时,要设置成GB2312,否则乱码
String lastName = new String(request.getParameter("lastName").getBytes("ISO-8859-1"), "GB2312");

方法二
使用GET方式提交数据的时候,中文问题很好解决,setRequestHeader("Content-Type","text/html; encoding=gb18030")就可以了。

使用POST:
表单页面中的js使用如下部分
//打开连接
xmlhttp.open("post", "/shake/ajaxAdd.jsp", false);
//当方法为post时需要如下设置http头
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//发送数据
var post="title="+title+"&content="+content+"&leibie="+leibie;
post = encodeURI(post);
post = encodeURI(post);  
xmlhttp.send(post);

接收处理页面中
String title=request.getParameter("title");
String content=request.getParameter("content");
String leibie=request.getParameter("leibie");
title = java.net.URLDecoder.decode(title, "UTF-8");
content = java.net.URLDecoder.decode(content, "UTF-8");
leibie = java.net.URLDecoder.decode(leibie, "UTF-8");

当调用request.getParameter()函数时,会自动进行一次URI的解码过程,调用时内置的解码过程会导致乱码出现。而URI编码两次后,request.getParameter()函数得到的是原信息URI编码一次的内容。再用可控的解码函数 java.net.URLDecoder.decode()就可解出原始的正确的信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值