terça-feira, 27 de julho de 2010

UrlEncode & UrlDecode

function URLEncode(txt) {
var SAFECHARS = "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"abcdefghijklmnopqrstuvwxyz" + "-_.!~*'()";
var HEX = "0123456789ABCDEF";
var plaintext = txt;
var encoded = "";

for (var i = 0; i < plaintext.length; i++ ) {
var ch = plaintext.charAt(i);
if (ch == " ") {
encoded += "+";
} else if (SAFECHARS.indexOf(ch) != -1) {
encoded += ch;
} else {
var charCode = ch.charCodeAt(0);

if (charCode > 255) {
alert( "Unicode Character '" + ch +
"' cannot be encoded using standard URL encoding.\n" +
"(URL encoding only supports 8-bit characters.)\n"); encoded += "+";
}else{
encoded += "%"; encoded += HEX.charAt((charCode >> 4) & 0xF);
encoded += HEX.charAt(charCode & 0xF);
}
}
} // for
return encoded; }

function URLDecode(txt) {

var HEXCHARS = "0123456789ABCDEFabcdef";
var encoded = txt;
var plaintext = "";
var i = 0;
while (i < encoded.length) {
var ch = encoded.charAt(i);
if (ch == "+") {
plaintext +=" "; i++;
} else if (ch == "%") {
if (i < (encoded.length-2) && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
plaintext+= unescape( encoded.substr(i,3) );
i += 3; } else {
alert( 'Bad escape combination near ...' + encoded.substr(i) ); plaintext += "%[ERROR]"; i++; }
}
else { plaintext += ch; i++; }
} // while
plaintext; };

Nenhum comentário:

Postar um comentário