[Ayuda] [OT] URL Encoding
Ixcoatl
ixcoatl_perez en yahoo.com.mx
Lun Sep 25 19:52:27 CDT 2006
Si, perdon. Yo programo en java y el codigo que mande en mi respuesta
anterior era de java.
Asumi que lo que querian era codificar desde una aplicacion en el
servidor para trabajar con
Ajax o algo asi.
Sin embargo hago casi exactamente lo mismo en mozilla desde el cliente.
No se si funcione en
explorer pero afortunadamente mis clientes no lo requieren.
Pongo mi codigo en javascript a continuacion. Me gusta hacerlo de esta
forma porque es un poco
mas rapido, solo sustituye caracter por caracter.
Saludos
convertirURL = function(l)
{
var c=codigosHtml;
//var b= (l+'').getBytes();
var sb = '';
for (var i=0;i<l.length;i++)
{
sb+=c[l.charCodeAt(i)];
}
return sb;
}
var codigosHtml = new Array
(
"%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08",
"%09", "%0A", "%0B", "%0C", "%0D", "%0E", "%0F",
"%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17", "%18",
"%19", "%1A", "%1B", "%1C", "%1D", "%1E", "%1F",
"%20", "%21", "%22", "%23", "%24", "%25", "%26", "%27", "%28",
"%29", "%2A", "%2B", "%2C", "%2D", "%2E", "%2F",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "%3A", "%3B",
"%3C", "%3D", "%3E", "%3F",
"%40", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L",
"M", "N", "O",
"P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "%5B", "%5C",
"%5D", "%5E", "%5F",
"%60", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
"m", "n", "o",
"p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "%7B", "%7C",
"%7D", "%7E", "%7F",
"%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87", "%88",
"%89", "%8A", "%8B", "%8C", "%8D", "%8E", "%8F",
"%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97", "%98",
"%99", "%9A", "%9B", "%9C", "%9D", "%9E", "%9F",
"%A0", "%A1", "%A2", "%A3", "%A4", "%A5", "%A6", "%A7", "%A8",
"%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF",
"%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7", "%B8",
"%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF",
"%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7", "%C8",
"%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF",
"%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D7", "%D8",
"%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF",
"%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7", "%E8",
"%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF",
"%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7", "%F8",
"%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF"
);
Gustavo Guillermo Pérez wrote:
> El Lunes, 18 de Septiembre de 2006 09:00, Miguel Cardenas escribió:
>
>> Holas
>>
>> Disculpen el off-topic pero bueno ai va... Tengo unas
>> funciones para decodificar datos pasados a traves de
>> un <FORM> sea por "get" o "post" y ya procesarlos como
>> se desee, pero ahora hay una situacion algo distinta,
>> no necesito decodificar, sino codificar... Las mismas
>> rutinas que tengo podrian modificarse para hacer lo
>> mismo pero a la inversa, concretamente mi duda es:
>> ¿cuales son los caracteres que se deben codificar? De
>> entrada encontre el ':' que se podria confundir como
>> parte de una direccion:puerto supongo, el '+' para el
>> espacio, 'áéíóú' y caracteres especiales, pero
>> quisiera saber si hay un criterio especial o una tabla
>> de rangos de caracteres que deban ser codificados.
>> Agradecere cualquier comentario o referencia de algun
>> documento.
>>
> De que lenguaje de programación estamos hablando?
> porque yo estoy trabajando con JavaScript y las funciones
> escape y unescape hacen todo, si es Java vienen incluida
> s en el nuevo Core les páso un algorítmo.
> Este es el algoritmo que usa Java
>
> public static String urlEncode(String Text){
> if (Text==null) return "";
> //Do Init
> if (notinit){
> int i;
> for (i = 'a'; i <= 'z'; i++) {
> isNotEncodable.set(i);
> }
> for (i = 'A'; i <= 'Z'; i++) {
> isNotEncodable.set(i);
> }
> for (i = '0'; i <= '9'; i++) {
> isNotEncodable.set(i);
> }
> isNotEncodable.set(' '); /* encoding a space to a + is done
> * in the encode() method */
> isNotEncodable.set('-');
> isNotEncodable.set('_');
> isNotEncodable.set('.');
> isNotEncodable.set('*');
> notinit = false;}
> boolean needToChange = false;
> StringBuffer out = new StringBuffer(Text.length());
> int len=Text.length();
> for (int i = 0; i < len; i++) {
> int c = (int) Text.charAt(i);
> if (isNotEncodable.get(c)) {
> if (c == ' ') {
> c = '+';
> needToChange = true;
> }
> out.append((char)c);
> } else {
> out.append('%');
> char ch = Character.forDigit((c >> 4) & 0xF, 16);
> if (Character.isLetter(ch)) {ch -= caseDiff;}
> out.append(ch);
> ch = Character.forDigit(c & 0xF, 16);
> if (Character.isLetter(ch)) {ch -= caseDiff;}
> out.append(ch);
> needToChange = true;
> }//end if
>
> }//end for;
>
> return (needToChange? out.toString() : Text);
>
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.yahoo.com.mx/
_______________________________________________
Ayuda mailing list
Ayuda en linux.org.mx
Para salir de la lista: http://mail.linux.org.mx/cgi-bin/mailman/listinfo/ayuda/
Más información sobre la lista de distribución Ayuda