<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
<title>Codificador y descoficador de cadena de texto a (o desde) formato URL</title>
<script type="text/javascript">
function URLEnc( ){
var nocodificar = "0123456789"+"ABCDEFGHIJKLMNOPQRSTUVWXYZ"+"abcdefghijklmnopqrstuvwxyz" +"-_.!~*'()";
var HEX = "0123456789ABCDEF";
var textoAcodificar = document.Form1.encode.value;
var codificado = "";
for (var i = 0; i < textoAcodificar.length; i++ ) {
var ch = textoAcodificar.charAt(i);
if (ch == " ") {
codificado += "+";
} else if (nocodificar.indexOf(ch) != -1) {
codificado += ch;
} else {
var charCode = ch.charCodeAt(0);
if (charCode > 255) {
alert( "Caracter Unicode '"+ch+"' no puede ser codificado utilizando la codificación URL estandar.\n" +
"(sólo soporta caracteres de 8-bit.)\n" +
"Será sustituido por un símbolo de suma (+)." );
codificado += "+";
} else {
codificado += "%";
codificado += HEX.charAt((charCode >> 4) & 0xF);
codificado += HEX.charAt(charCode & 0xF);
}
}
}
document.Form1.decode.value = codificado;
return false;
};
function URLDec( ){
var HEXCHARS = "0123456789ABCDEFabcdef";
var codificado = document.Form1.decode.value;
var textoAcodificar = "";
var i = 0;
while (i < codificado.length) {
var ch = codificado.charAt(i);
if (ch == "+") {
textoAcodificar += " ";
i++;
} else if (ch == "%") {
if (i < (codificado.length-2)
&& HEXCHARS.indexOf(codificado.charAt(i+1)) != -1
&& HEXCHARS.indexOf(codificado.charAt(i+2)) != -1 ) {
textoAcodificar += unescape( codificado.substr(i,3) );
i += 3;
} else {
alert( 'Bad escape combination near ...' + codificado.substr(i) );
textoAcodificar += "%[ERROR]";
i++;
}
} else {
textoAcodificar += ch;
i++;
}
}
document.Form1.encode.value = textoAcodificar;
return false;
};
</script>
</head>
<body>
<form name="Form1" onsubmit="return false;" >
<p>
Descodificado:<input name="encode" size="50" value="">
</p>
<p>
Codificado:<input name="decode" size="50" value="">
</p>
<p>
<input value="URLEncode" type="button" onclick="return URLEnc()">
<input value="URLDecode" type="button" onclick="return URLDec()">
</p>
</form>
</body>
</html>