·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[JS]JavaScript中实现ANSI(gb2312)的URL编码与解码URLEncode、UR

时间:2013-09-22 14:30cuplayer.com
JavaScript中实现ANSI(gb2312)的URL编码与解码URLEncode、URLDecode

encodeURI 和 encodeURIComponent 是按 UTF-8 对 URL 编码的,下面的代码是按 ANSI 对 URL进行编码和解码的。使用了两个 vbscript 自定义函数,请参见 JavaScript 函数如何调用 VBScript 函数。

以下整理自 Moocky.Mark's Blog。

  1. <script type="text/vbscript"> 
  2. <!-- 
  3. function str2asc(strstr) 
  4.     str2asc   =   hex(asc(strstr)) 
  5. end function 
  6.   
  7. function   asc2str(ascasc) 
  8.     asc2str   =   chr(ascasc) 
  9. end function 
  10. '--> 
  11. </script> 
  12.   
  13.   
  14. <script type="text/javascript"> 
  15. <!-- 
  16. function urlEncode(str) 
  17.     var ret = ""
  18.     var strSpecial = "!\"#$%&’()*+,/:;<=>?[]^`{|}~%"; 
  19.     var tt = ""
  20.     for(var i = 0; i < str.length; i++) 
  21.     { 
  22.         var chr = str.charAt(i); 
  23.         var c = str2asc(chr); 
  24.         tt += chr + ":" + c + "n"; 
  25.         if (parseInt("0x" + c) > 0x7f) 
  26.         { 
  27.             ret += "%" + c.slice(0,2) + "%" + c.slice(-2); 
  28.         } 
  29.         else 
  30.         { 
  31.             if (chr == " ") 
  32.                 ret += "+"; 
  33.             else if (strSpecial.indexOf(chr) != -1) 
  34.                 ret += "%" + c.toString(16); 
  35.             else 
  36.                 ret += chr; 
  37.         } 
  38.     } 
  39.     
  40.     return ret; 
  41.  
  42. function urlDecode(str) 
  43.     var ret = ""
  44.     for (var i = 0; i < str.length; i++) 
  45.     { 
  46.         var chr = str.charAt(i); 
  47.         if (chr == "+") 
  48.         { 
  49.             ret += " "; 
  50.         } 
  51.         else if (chr == "%") 
  52.         { 
  53.             var asc = str.substring(i+1, i+3); 
  54.             if (parseInt("0x"+asc) > 0x7f) 
  55.             { 
  56.                 ret += asc2str(parseInt("0x" + asc+str.substring(i+4, i+6))); 
  57.                 i += 5; 
  58.             } 
  59.             else 
  60.             { 
  61.                 ret += asc2str(parseInt("0x"+asc)); 
  62.                 i += 2; 
  63.             } 
  64.         } 
  65.         else 
  66.         { 
  67.             ret += chr; 
  68.         } 
  69.     } 
  70.     
  71.     return ret; 
  72. --> 
  73. </script> 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器