21 de abril de 2006

Java + unicode + UTF8 + jdom = PROBLEMAS

Hola, hoy aprendí algo y quiero compartirlo por que me costo mucho trabajo encontrarlo.

Bueno chicos como dice el titulo que pasa si mezclamos java con jdom o xml en general. Bueno para mi, problemas jejeje, solo problemas para mi claro esta, por que jdom es un api excelente para trabajar con xml de una manera mas eficaz. En lo personal me encanto el api. Pero hay un detalle por el que casi tenia que decir, mi aplicacion no acepta acentos o caracteres raros.

jeejejee bueno claro que en xml hay caracteres reservados pero fuera de esos caracteres que pasa si en un string tienes niño y lo pasas al documento xml. Pues muy simple, luego no lo puedes abrir, por que resulta que te marca errores por que la ñ que mandaste del string (osea con charset unicode) pues el parser no lo reconoce como un caracter valido en utf-8

Pero bueno que sucede: En java la clase String emplea unicode para la codificación de sus caracteres. Entonces como conviertes de unicode a utf-8 para poder pasarlo al xml.

Pues al buscar en google me resulto claro que no estaba solo y muchos subieron la misma pregunta en foros y otros lugares. Pero la respuesta es algo simplona pero util.

bueno imaginen esto:
String str = ñ;
/*Antes de pasarlo al xml con un setText puedes hacer esta simple instrucción y listo.*/
str = new String(str.geBytes("UTF8"));
y ahora si listo para setText(str);

Desglosando un poco esto:
getBytes("UTF8") te regresa un arreglo de bytes que corresponden al string pero en codificación UTF-8. Y el resto es aun mas simple crear un nuevo String pero con los valores de este arreglo de bytes, bueno es algo sencillo y a mi me funciono, pero creo que es algo dificil de encontrar. Yo lo que buscaba era algo que me cambiara toda la codificacion de un documento de jdom pero en vez de eso solo encontre esto.

Espero que a alguien le sirva.

Suerte.

Por cierto la persona que posteo la info necesaria para entender esto fue:
Patrick JUSSEAU

A el muchas gracias.

1 comentario:

Coca dijo...

Y porque en vez de usar el UTF-8 no encodeas con ISO-8859-15?????? Ese es el Codigo ISO para español. :) Saludos.

Mi propio wiki

Bueno ya estoy de vuelta, y quiero mostrar algo que me ha parecido útil en mi vida laboral. Se remonta a cuando entré a trabajar en Mon...