JS urlencode,urldecode

复制代码
 1 var LittleUrl = {  
 2     // public method for url encoding  
 3     encode : function (string) {  
 4         return escape(this._utf8_encode(string));  
 5     },  
 6     // public method for url decoding  
 7     decode : function (string) {  
 8         return this._utf8_decode(unescape(string));  
 9     },  
10     // private method for UTF-8 encoding  
11     _utf8_encode : function (string) {  
12         string = string.replace(/\r\n/g,"\n");  
13         var utftext = "";  
14         for (var n = 0; n < string.length; n++) {  
15    
16             var c = string.charCodeAt(n);  
17    
18             if (c < 128) {  
19                 utftext += String.fromCharCode(c);  
20             }  
21             else if((c > 127) && (c < 2048)) {  
22                 utftext += String.fromCharCode((c >> 6) | 192);  
23                 utftext += String.fromCharCode((c & 63) | 128);  
24             }  
25             else {  
26                 utftext += String.fromCharCode((c >> 12) | 224);  
27                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
28                 utftext += String.fromCharCode((c & 63) | 128);  
29             }  
30    
31         }  
32    
33         return utftext;  
34     },  
35    
36     // private method for UTF-8 decoding  
37     _utf8_decode : function (utftext) {  
38         var string = "";  
39         var i = 0;  
40         var c = c1 = c2 = 0;  
41    
42         while ( i < utftext.length ) {  
43    
44             c = utftext.charCodeAt(i);  
45    
46             if (c < 128) {  
47                 string += String.fromCharCode(c);  
48                 i++;  
49             }  
50             else if((c > 191) && (c < 224)) {  
51                 c2 = utftext.charCodeAt(i+1);  
52                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
53                 i += 2;  
54             }  
55             else {  
56                 c2 = utftext.charCodeAt(i+1);  
57                 c3 = utftext.charCodeAt(i+2);  
58                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
59                 i += 3;  
60             }  
61         }  
62         return string;  
63     }  
64 }  
复制代码

 

原文地址:http://willeager.iteye.com/blog/1061824

posted on   咚..咚  阅读(148)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示