A-A+

js URLdecode()与urlencode方法支持中文解码

2016年02月16日 前端设计 暂无评论 阅读 5 views 次

下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考,代码如下:

  1. <script language="vbscript">   
  2. Function str2asc(strstr)   
  3. str2asc = hex(asc(strstr))   
  4. End Function   
  5. Function asc2str(ascasc)   
  6. asc2str = chr(ascasc)   
  7. End Function   
  8. </script>  
  9. <script language="javascript" type="text/javascript">  
  10. function UrlEncode(str){   
  11.    var ret="";   
  12.    var strSpecial="!"#$%&'()*+,/:;<=>?[]^`{|}~%";  
  13.    for(var i=0;i<str.length;i++){  
  14.    var chr = str.charAt(i);  
  15.      var c=str2asc(chr);  
  16.      if(parseInt("0x"+c) > 0x7f){  
  17.        ret+="%"+c.slice(0,2)+"%"+c.slice(-2);  
  18.      }else{  
  19.        if(chr==" ")  
  20.          ret+="+";  
  21.        else if(strSpecial.indexOf(chr)!=-1)  
  22.          ret+="%"+c.toString(16);   
  23.        else   
  24.          ret+=chr;   
  25.      }   
  26.    }   
  27.    return ret;   
  28. }  
  29. </script>  

用这样的办法调用,代码如下:

  1. <script language="javascript" type="text/javascript">  
  2. alert(UrlEncode("孙毓波大好人"));  
  3. </script>  

解码办法,代码如下:

  1. function UrlDecode(zipStr){    
  2.     var uzipStr="";    
  3.     for(var i=0;i<zipStr.length;i++){    
  4.         var chr = zipStr.charAt(i);    
  5.         if(chr == "+"){    
  6.             uzipStr+=" ";    
  7.         }else if(chr=="%"){    
  8.             var asc = zipStr.substring(i+1,i+3);    
  9.             if(parseInt("0x"+asc)>0x7f){    
  10.                 uzipStr+=decodeURI("%"+asc.toString()+zipStr.substring(i+3,i+9).toString());    
  11.                 i+=8;    
  12.             }else{    
  13.                 uzipStr+=AsciiToString(parseInt("0x"+asc));    
  14.                 i+=2;    
  15.             }    
  16.         }else{    
  17.             uzipStr+= chr;    
  18.         }    
  19.     }    
  20.     
  21.     return uzipStr;    
  22. }    
  23.     
  24. function StringToAscii(str){    
  25.     return str.charCodeAt(0).toString(16);    
  26. }    
  27. function AsciiToString(asccode){    
  28.     return String.fromCharCode(asccode);    
  29. }  

用法,使用方法,代码如下:

  1. var str = '%e7%90%bc%e5%8f%b0%e5%8d%9a%e5%ae%a2';  
  2. var destr = UrlDecode(str);  
  3. alert(destr);  
标签:

给我留言