六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 97|回复: 0

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

[复制链接]

升级  85%

135

主题

135

主题

135

主题

举人

Rank: 3Rank: 3

积分
455
 楼主| 发表于 2013-2-5 01:27:16 | 显示全部楼层 |阅读模式
在做项目的时候需要对(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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表