ASP接收Ajax 在POST方式下发送的escape编码中的个别乱码

2016-02-19 19:08 36 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享ASP接收Ajax 在POST方式下发送的escape编码中的个别乱码,希望可以对大家能有小小的帮助。

【 tulaoshi.com - Web开发 】

  看代码:

           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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  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的高手们,解决了和我说一声,谢了!

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

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

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

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

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

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

来源:https://www.tulaoshi.com/n/20160219/1620073.html

延伸阅读
标签: Web开发
escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / + 英文解释:MSDN JScript Reference: The escape...
标签: Web开发
jsp页面 : 代码如下: $(document).ready(function() { setInterval(function myTimer() { //alert('a'); getViews(); },1000); }); //播放 function getViews(){ $.ajax({ 'url':"${pageContext.request.contextPath}/video/getVideos.action?r="+Math.random()+"&open=1", 'data': '', 'dataType': 'json', 'type': 'get', ...
标签: Web开发
代码如下: % response.Expires=-1 response.CacheControl="no-cache" % !--#include file="../../conn/conn.asp"-- !--#include file="../psw.asp"-- !--#include file="../../functions/dofunction.asp"-- !--#include file="../../functions/showfunction.asp"-- !--#include file="../../fqdb/admin/website.asp"-- % cmd = che...
标签: Web开发
jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求 参数: url (String) : 发送请求的URL地址. data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示。 callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。 type (String) : ...
标签: Web开发
用AJAX来GET回一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就乱了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHT...

经验教程

685

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部