首页 | 论坛 | 新闻资讯 | 设计欣赏 | 设计教程 | 网络编程 | 字体下载 | 平面教程 | 特色图标 | 设计素材 | 代码素材 | 网页模板 | 建站服务
卡通 | 环境 | 平面设计 | 网页设计 | 广告艺术 | 时尚摄影 | 形像设计 | 插画设计 | 三维设计 | 工业设计 | 时尚摄影 | 时尚时装 | 界面设计
·企业建站只需980元起
·制作大型专业网站,亦是如此简单
·南宁网站建设  ·南宁网站建设
·南宁网站建设  ·南宁网站建设
 当前位置:主页>网络编程>ASP技巧>列表
ASP接收Ajax 在POST方式发送的escape编码中的个别乱码
2008-07-15  来源:网络收集   作者:未知  点击:   评论:0 条
 

看代码:

         var xmlhttp=getHTTPObject();
  var post="test·test+test·";
  xmlhttp.open('POST', 'test.asp?random='+Math.random(), true);
  xmlhttp.setrequestheader("content-length",post.length);
  xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  xmlhttp.onreadystatechange = function(){
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
      alert(xmlhttp.responseText);
      return true;
    }
  }
  xmlhttp.send("act="escape(post));


在这里,我以POST方式发送了字符串escape("test·test+test·"),并且使用了setRequestHeader

ASP端接收的时候,我用

<%Response.CodePage=936%>
<%Response.Charset="gb2312"
Response.Write Unescape(Request("act"))
%>


最后调试一下你看到的结果就是“·”和“+”都显示不出来。

开始我以为是asp和javascript的escape unescape不配套的结果,后来我使用vbsunescape(如下)代替unescape问题依然如故。


<script language="javascript" runat="server">

  function vbsunescape(source){
    return unescape(source);
  }

</script>


我把+做了转义,但是·不知道怎么弄,他把·转成了什么我本来想写进一个2进制文件看看(必须是二进制文件),但是在asp下用stream操作2进制文件我老出错,哎没时间弄这个了,还有好多事呢,先凑合转义一下了,这个问题留给看到这个blog的高手们,解决了和我说一声,谢了!


function escape2(str){
  return escape(str).replace(/\+/g,"%2b");
}

--------------------------------------------
看到大家的回复,谢谢大家。汲取大家的思想精华,我终于研究出来了。。。。

最终的完美的解决方法是这样的

发送端用encodeURIComponent(escape(xxxxxxx))就可以了(其他发送接受代码同上)

我昨天仅作了encodeURI的尝试,没有想到encodeURIComponent和escape套接的方法,刚才突然来了灵感试了一下,太牛逼了,OHYEAH!吃饭去!!

[收藏]  [推荐]  [评论]  [打印]  [关闭]
上一篇:SQL存储过程初探
下一篇:没有了
 最新图文
 最新评论
查看所有评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: (新注册) 密码:
匿名?
免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有异议,请联络本站! 转载要求:文章作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站地址,且不准打上各自站点的水印。
 热门关注
 相关文章
 Google提供的广告