zpball 发表于 2013-2-5 01:27:16

Javascript版 UrlEncode和UrlDecode函数 (URL地址栏参数加密解密)

在做项目的时候需要对(Internet) Search Engine导入链接进行Keyword analysis.

Google用的是js'encodeURI()函数,可直接用decodeURI()解码。
Baidu 则用的是:
System.Web.HttpUtility.UrlEncode("编码", System.Text.Encoding.GetEncoding("gb2312"))的编码,
解码则需要用到:
System.Web.HttpUtility.UrlDecode("%B1%E0%C2%EB", System.Text.Encoding.GetEncoding("GB2312")));
这个需要用的ASP.NET C#.   以下提供一个Javascript操作进行解码的方法.


<script language="vbscript">       Function str2asc(strstr)            str2asc = hex(asc(strstr))      End Function          Function asc2str(ascasc)            asc2str = chr(ascasc)      End Function   </script>   <script language="vbscript">Function str2asc(strstr)   str2asc = hex(asc(strstr)) End Function Function asc2str(ascasc)   asc2str = chr(ascasc) End Function</script>

<SCRIPT language=JavaScript>   <!--   //URL加密   function UrlEncode(str)   {      var ret="";      var strSpecial="!\"#$%&()*+,/:;<=>?[]^`{|}~%"; var tt="";       for(var i=0;i<str.length;i++)       {            var chr = str.charAt(i);            var c=str2asc(chr);            tt += chr+":"+c+"n";            if(parseInt("0x"+c) > 0x7f)         {                ret+="%"+c.slice(0,2)+"%"+c.slice(-2);            }         else          {                if(chr==" ")                  ret+="+";                else if(strSpecial.indexOf(chr)!=-1)                  ret+="%"+c.toString(16);                else                  ret+=chr;            }      }      return ret;    }      //URL解密   function UrlDecode(str){      var ret="";      for(var i=0;i<str.length;i++)       {            var chr = str.charAt(i);            if(chr == "+")         {                ret+=" ";            }         else if(chr=="%")         {                var asc = str.substring(i+1,i+3);                if(parseInt("0x"+asc)>0x7f)               {                  ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6)));                  i+=5;                }               else            {                  ret+=asc2str(parseInt("0x"+asc));                  i+=2;                }            }         else          {                ret+= chr;            }      }      return ret;    }         //-->   </SCRIPT>

<SCRIPT language=JavaScript><!--//URL加密function UrlEncode(str){   var ret="";   var strSpecial="!\"#$%&()*+,/:;<=>?[]^`{|}~%"; var tt="";    for(var i=0;i<str.length;i++)    {         var chr = str.charAt(i);         var c=str2asc(chr);         tt += chr+":"+c+"n";         if(parseInt("0x"+c) > 0x7f)      {             ret+="%"+c.slice(0,2)+"%"+c.slice(-2);         }      else      {             if(chr==" ")               ret+="+";             else if(strSpecial.indexOf(chr)!=-1)               ret+="%"+c.toString(16);             else               ret+=chr;         }   }   return ret; } //URL解密function UrlDecode(str){   var ret="";   for(var i=0;i<str.length;i++)    {         var chr = str.charAt(i);         if(chr == "+")      {             ret+=" ";         }      else if(chr=="%")      {             var asc = str.substring(i+1,i+3);             if(parseInt("0x"+asc)>0x7f)            {               ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6)));               i+=5;             }            else            {               ret+=asc2str(parseInt("0x"+asc));               i+=2;             }         }      else      {             ret+= chr;         }   }   return ret; } //--></SCRIPT>



怎么调用,我想都应该知道了吧........

http://yaojialing.iteye.com/blog/608602
页: [1]
查看完整版本: Javascript版 UrlEncode和UrlDecode函数 (URL地址栏参数加密解密)