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

Leer ficheros con diferente codificación

Estas en el tema de Leer ficheros con diferente codificación en el foro de Java en Foros del Web. Hola a todos! Os comento mi problema por si podeis echarme una mano. Resulta que tengo una serie de ficheros que están compuestos por cientos ...
  #1 (permalink)  
Antiguo 29/01/2010, 05:39
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Leer ficheros con diferente codificación

Hola a todos!

Os comento mi problema por si podeis echarme una mano.
Resulta que tengo una serie de ficheros que están compuestos por cientos de páginas webs. Estás webs tiene diferente codificación. Un ejemplo para que se entienda, tengo un fichero llamado fich.arc (codificado en ISO-8859-1) y dicho fichero contiene 100 páginas webs, una detrás de otra, cada una de ellas codificada de una manera (unas UTF-8, otras ISO y otras no pone nada).

El objetivo es limpiar el código que aparece y quedarme con texto plano. El problema es que tengo que insertar cada página en una base de datos y tengo problemas con los acentos y caracteres similares.

Por ejemplo tengo una de las páginas que pone que es ISO y la tengo ya leida en un String, la inserto en la BD y en vez de aparecer el acento aparece el símbolo '|'. La codificación de la BD no es el problema porque si muestro por pantalla el String, lo muestra mal (antes de la inserción).

Cuando la página sé que es ISO, he probado a hacer:

fFinal=new String(fFinal.getBytes(ISO-8859-1), "UTF-8");

pero no funciona (Cambia los acentos por '?').

Ya he leido que en el momento que tienes un String en Java con el texto, ya lo tienes codificado en UTF-16, pero entonces ¿qué puedo hacer para conseguir pasar lo que tengo en el String a una codificación correcta?

Espero que podais ayudarme.

Muchas gracias!!!
  #2 (permalink)  
Antiguo 29/01/2010, 06:21
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Leer ficheros con diferente codificación

Prueba a cambiar el charset en tu aplicación web.

request.setCharacterEncoding("UTF-16"); //para servlets
<%@page pageEncoding="UTF-16"%> //en jsps

Aquí tienes un tutorial para UTF-8, quizás aplicándolo para UTF-16 te sirva:

http://www.adictosaltrabajo.com/tuto...ina=tomcatUTF8
http://www.programacionenjava.com/bl...web-en-tomcat/

y si todo falla puedes usar esto:

http://awevo.net/2009/03/si-no-se-mu...t-jsp-y-mysql/
  #3 (permalink)  
Antiguo 29/01/2010, 06:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Leer ficheros con diferente codificación

Si lo tienes en un String, ya lo has leido (en tu caso, mal). Tienes que especificar la codificación antes de pasarlo a String, en tu caso al leer el fichero. Si usas un InputStreamReader puedes especificar la codificación del Stream que estas leyendo y quiza con eso te sirva.

El problema es que si tienes dentro de un mismo stream, varios ficheros con codificaciones diferentes... eso es un problema. Quizá tendrías que cortarlo antes de leerlos por que si no, va a ser complicado. O leerlos cada trozo como byte[] y eso pasarlo a String con la codificación adecuada en cada caso.

Pero una vez tienes el String, ya es tarde para "leerlo" con otra codificación.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #4 (permalink)  
Antiguo 02/02/2010, 05:10
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Leer ficheros con diferente codificación

Muchas gracias por contestar.

Lo primero explicar que no es una aplicación web. Por lo que la solución de Fuzzylog no me vale. El último enlace que me das creo que es lo que yo tengo puesto:

fFinal=new String(fFinal.getBytes(ISO-8859-1), "UTF-8");

(Se supone que pasaría de ISO-8859-1 a UTF-8.)

Creo que GreenEyed tiene razón. Una vez que lo tengo leido en un String ya no puedo utilizar esa función porque lo tengo codificado en UTF-16, por lo que pasarlo de ISO a UTF-8 no hace nada (ya que no está en ISO).

El problema es que no puedo leerlo byte a byte porque necesito leerlo línea a línea para ir dividiendo el texto e ir encontrando una serie de caracteres en él.

¿Existe algún tipo de función para que una vez leído pueda borrar los caracteres raros? Básicamente lo que me gustaría es poder recuperar los acentos que es lo que pierdo al leer el texto. (Como he dicho no los pierdo siempre, solamente cuando la codificación de la página es diferente a UTF-8)

Muchas gracias y espero haberme explicado...

Etiquetas: diferente, ficheros
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 06:13.