JQuery urlencode / decode patch help

I use this jQuery urlencode and urldecode plugin - very simple and easy to use, but in the original form it does not remove + from the string. One comment on the homepage suggests a patch, but I don't know how to implement it. Can anyone help me out?

Page: http://www.digitalbart.com/jquery-and-urlencode/

 //URL Encode/Decode $.extend({URLEncode:function(c){var o='';var x=0;c=c.toString(); var r=/(^[a-zA-Z0-9_.]*)/; while(x<c.length){var m=r.exec(c.substr(x)); if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length; }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16); o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;}, URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/; while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){ b=parseInt(m[1].substr(1),16); t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;} }); 

Suggested Patch:

 function dummy_url_decode(url) { // fixed -- + char decodes to space char var o = url; var binVal, t, b; var r = /(%[^%]{2}|\+)/; while ((m = r.exec(o)) != null && m.length > 1 && m[1] != '') { if (m[1] == '+') { t = ' '; } else { b = parseInt(m[1].substr(1), 16); t = String.fromCharCode(b); } o = o.replace(m[1], t); } return o; } 

Thanks!

+6
javascript jquery urlencode urldecode
source share
1 answer

Do not use this plugin at all; it's pointless. Javascript already supports URL encoding and decoding with built-in functions ( encodeURIComponent and decodeURIComponent ). Spaces are encoded as% 20 with this mechanism.

If your server-side code places plus signs for spaces, you can get rid of them with a simple replacement for regular expressions, as there will be no β€œreal” plus signs to worry about (they are encoded as% 2B):

 var decoded = decodeURIComponent(encoded.replace(/\+/g, '%20')); 
+34
source share

All Articles