·您当前的位置:首页 > 技术教程 > 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. { 
  18.     var ret = ""; 
  19.     var strSpecial = "!\"#$%&’()*+,/:;<=>?[]^`{|}~%"; 
  20.     var tt = ""; 
  21.     for(var i = 0; i < str.length; i++) 
  22.     { 
  23.         var chr = str.charAt(i); 
  24.         var c = str2asc(chr); 
  25.         tt += chr + ":" + c + "n"; 
  26.         if (parseInt("0x" + c) > 0x7f) 
  27.         { 
  28.             ret += "%" + c.slice(0,2) + "%" + c.slice(-2); 
  29.         } 
  30.         else 
  31.         { 
  32.             if (chr == " ") 
  33.                 ret += "+"; 
  34.             else if (strSpecial.indexOf(chr) != -1) 
  35.                 ret += "%" + c.toString(16); 
  36.             else 
  37.                 ret += chr; 
  38.         } 
  39.     } 
  40.     
  41.     return ret; 
  42. } 
  43.  
  44. function urlDecode(str) 
  45. { 
  46.     var ret = ""; 
  47.     for (var i = 0; i < str.length; i++) 
  48.     { 
  49.         var chr = str.charAt(i); 
  50.         if (chr == "+") 
  51.         { 
  52.             ret += " "; 
  53.         } 
  54.         else if (chr == "%") 
  55.         { 
  56.             var asc = str.substring(i+1, i+3); 
  57.             if (parseInt("0x"+asc) > 0x7f) 
  58.             { 
  59.                 ret += asc2str(parseInt("0x" + asc+str.substring(i+4, i+6))); 
  60.                 i += 5; 
  61.             } 
  62.             else 
  63.             { 
  64.                 ret += asc2str(parseInt("0x"+asc)); 
  65.                 i += 2; 
  66.             } 
  67.         } 
  68.         else 
  69.         { 
  70.             ret += chr; 
  71.         } 
  72.     } 
  73.     
  74.     return ret; 
  75. } 
  76. --> 
  77. </script> 

 

热门文章推荐

请稍候...

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

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