Foros del Web » Programación para mayores de 30 ;) » Java »

Codificación de caracteres usando api XOM

Estas en el tema de Codificación de caracteres usando api XOM en el foro de Java en Foros del Web. Saludos, sigo con mis problemas y dudas, a ver si esta se la sabe alguien: Estoy utilizando la api XOM para generar un feed RSS. ...
  #1 (permalink)  
Antiguo 19/11/2010, 03:48
 
Fecha de Ingreso: febrero-2010
Ubicación: Asturias patria querida
Mensajes: 45
Antigüedad: 14 años, 2 meses
Puntos: 4
Codificación de caracteres usando api XOM

Saludos, sigo con mis problemas y dudas, a ver si esta se la sabe alguien:

Estoy utilizando la api XOM para generar un feed RSS. En principio funciona bien pero me da problemas con la codificación de caracteres en ciertas partes del contenido.

Los datos los saco de una base de datos mysql con codificación utf-8 y los cargo en un ArrayList antes de generar el contenido xml. He de decir que el contenido de la base de datos está correcto, no tiene caracteres raros ni nada por el estilo. Pongo las partes del codigo importantes:

Este es el código que genera los item:

Código PHP:
for (int i 0this.noticias.size(); i++) {
     
Element item = new Element("item");
     
Element title = new Element("title");
     
Text titleText = new Textthis.noticias.get(i).getTitular());
     
title.appendChild(titleText);
     
item.appendChild(title);
     
Element link = new Element("link");
     
Text linkText = new Text(Web.dominio "/noticias/" this.noticias.get(i).getIdNoticia());
     
link.appendChild(linkText);
     
item.appendChild(link);
     
Element description = new Element("description");
     
Text descriptionText = new Text(this.noticias.get(i).getDesarrollo());
     
description.appendChild(descriptionText);
     
item.appendChild(description);
     
channel.appendChild(item);

Y este es el que lo codifica a ISO-8859-1 y lo graba en el fichero:

Código PHP:
Document doc = new Document(rss); // rss es el elemento raíz
FileOutputStream fichero = new FileOutputStream("feed.rss");
Serializer output = new Serializer(fichero"ISO-8859-1");
output.setIndent(2);
output.write(doc); 
Lo más raro de todo y lo que me está llevando de cabeza es que el elemento <description> de cada item se muestra correctamente, con sus acentos y ñ, sin embargo el elemento <title> no, todos los acentos y eñes aparecen así: ý

¿qué es lo que no estoy haciendo bien o como podría solucionar esto?

Gracias de antemano y un saludo
  #2 (permalink)  
Antiguo 20/11/2010, 03:38
 
Fecha de Ingreso: febrero-2010
Ubicación: Asturias patria querida
Mensajes: 45
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Codificación de caracteres usando api XOM

Bueno pues ya lo he arreglado.
Digo la solución por si a alguien le sirve, solo había que llamar al método setUnicodeNormalizationFormC de la clase Serializer, pasandole true como argumento, antes de escribirlo en el fichero, y guardarlo como utf-8 en vez de iso-8859-1. El segundo bloque de código, el que daformato y guarda en el fichero, quedaría así:

Código PHP:
Document doc = new Document(rss); // rss es el elemento raíz
FileOutputStream fichero = new FileOutputStream("feed.rss");
Serializer output = new Serializer(fichero); // se utiliza el charset por defecto utf-8
output.setIndent(2);
output.setUnicodeNormalizationFormC(true); // este es el método que faltaba
output.write(doc); 

Etiquetas: api, caracteres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:23.