日期:2014-05-16  浏览次数:20595 次

AJAX在post时候返回数据出现乱码
网上说直接在送出的流里加个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会出现乱码了,但是我的还是乱码。。。。
就是下面的代码:

<body   id= "aaa ">
</body>

<script   language= "javascript ">
try
{
xmlhttp   =   new   ActiveXObject( "Msxml2.XMLHTTP.3.0 ");
xmlhttp.open( "POST ",   "http://www.hzaic.gov.cn/EntStateQuery.do ",   false);
xmlhttp.setRequestHeader( 'Content-type ',   'application/x-www-form-urlencoded;charset=GB2312; ');
xmlhttp.send( "ename=杭州普惠科技有限公司 ");
aaa.innerHTML   =   xmlhttp.responseText;
}
catch(e)
{
aaa.innerHTML   =   "error   occurs: "   +   e.toString();
}
</script>

------解决方案--------------------
服务器端取数:
String enname = request.getParameter( "enname ");
enname = new String( enname.getBytes( "ISO8859_1 "), "utf-8 " ) ;
------解决方案--------------------
数据是UTF-8的,,你转换一下就可以了
在服务端
------解决方案--------------------
对于需要传输中文或者特殊字符的
客户端请求时encode
服务器端接收时decode
------解决方案--------------------
huo789(爱拼才会赢)解释的正确。

function encode(s) {
return encodeURIComponent(escape(s|| ' '));
}

function decode(s){
return unescape(unescape(s|| ' '));
}