JavaScript实现URL编码

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

<script language="javascript">
/*这里开始时UrlEncode和UrlDecode函数*/
function UrlEncode(str){
   var ret="";
   var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%";
   for(var i=0;i<str.length;i++){
    var chr = str.charAt(i);
     var c=str2asc(chr);
     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;
}
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>



================================

方法二:

function   URLEncode(plaintext)   
  {   
  //   The   Javascript   escape   and   unescape   functions   do   not   correspond   
  //   with   what   browsers   actually   do...   
  var   SAFECHARS   =   "0123456789"   +   //   Numeric   
  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"   +   //   Alphabetci   
  "abcdefghijklmnopqrstuvwxyz"   +   
  "-_.!~*'()";   //   RFC2396   Mark   characters   
  var   HEX   =   "0123456789ABCDEF";   
  
  var   encoded   =   "";   
  for   (var   i   =   0;   i   <   plaintext.length;   i++   )   {   
  var   ch   =   plaintext.charAt(i);   
          if   (ch   ==   "   ")   {   
          encoded   +=   "+";   //   x-www-urlencoded,   rather   than   %20   
  }   else   if   (SAFECHARS.indexOf(ch)   !=   -1)   {   
          encoded   +=   ch;   
  }   else   {   
          var   charCode   =   ch.charCodeAt(0);   
  if   (charCode   >   255)   {   
          alert(   "Unicode   Character   '"   +   ch   +   "'   cannot   be   encoded   using   standard   URL   encoding.\n"   +   
                  "(URL   encoding   only   supports   8-bit   characters.)\n"   +   
  "A   space   (+)   will   be   substituted."   );   
  encoded   +=   "+";   
  }   else   {   
  encoded   +=   "%";   
  encoded   +=   HEX.charAt((charCode   >>   4)   &   0xF);   
  encoded   +=   HEX.charAt(charCode   &   0xF);   
  }   
  }   
  }   //   for   
  
  return   encoded;   
  }   
  
  function   URLDecode(encoded)   
  {   
        //   Replace   +   with   '   '   
        //   Replace   %xx   with   equivalent   character   
        var   plaintext   =   "";   
        var   i   =   0;   
        while   (i   <   (encoded.length-2))   {   
                var   ch   =   encoded.charAt(i);   
        if   (ch   ==   "+")   {   
                plaintext   +=   "   ";   
        i++;   
        }   else   if   (ch   ==   "%"   &&   encoded.charAt(i+1)   !=   "%")   {   
                plaintext   +=   unescape(   encoded.substr(i,3)   );   
        i   +=   3;   
  }   else   {   
        plaintext   +=   ch;   
        i++;   
  }   
  }   //   while   
  if   (i   <   encoded.length)   {   
          plaintext   +=   encoded.substr(i,encoded.length-i);   
  }   
        return   unescape(plaintext);   
  }    

你可能感兴趣的:(JavaScript)