autogenerating replace for old behavior of escape()
by johnwun
HTML
<pre class="enc"></pre>
<pre class="dec"></pre>
<pre class="proof"></pre>
JavaScript
// Note: this will not run in FF v28.0 and above as escape is broken
var nonAlphaChars = "~`!@#$%^&*()_+-={}|[]\\ :;\"'<>?,./";
var arr = nonAlphaChars.split("");
var encArr = [];
var decArr = [];
var proofArr = [];
for(var c=0;c<arr.length;c++){
if(encodeURI(arr[c]) != escape(arr[c])){
encArr.push("str = encodeURI(str).replace(/["+arr[c]+"]/g, \""+escape(arr[c])+"\");")
decArr.push("str = decodeURI(str).replace(/"+escape(arr[c])+"/g, \""+arr[c]+"\");")
}
};
//proof - Different in Firefox v28
for(var c=0;c<arr.length;c++){
proofArr.push(arr[c]+" is "+escape(arr[c]));
};
$(".enc").html(encArr.join("\n"));
$(".dec").html(decArr.join("\n"));
$(".proof").html(proofArr.join("\n"));