Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/09/2010, 13:24
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Leer fichero con caracteres especiales

Hola,

El proceso es complejo puesto que están en juego varios archivos y un documento HTML, aparte que es imposible saber en que tabla de caracteres está todo tu sistema funcionando solamente con la información que mostraste.

Pero puedes tomar en cuenta los siguientes factores para intentar solucionar ese inconveniente. Primero tienes que saber en que charset está el documento de entrada, la clase FileReader usa el charset por defecto del sistema operativo, así que si el documento está en ISO-8859-1 y usas FileReader en Linux con UTF-8 lo va a leer incorrectamente. Aunque ese inconveniente lo puedes solventar facilmente usando InputStreamReader en lugar de FileReader.

Ahora viene el inconveniente mas difícil de detectar ...

Si ese documento JSP está guardado en UTF-8 y lees el documento que está en ISO-8859-1 y lo insertas con out.write(), te va a quedar la parte del JSP en UTF y la parte insertada en ISO, lo cual no correcto. No podrías poner un encabezado meta Content-Type ni UTF ni ISO, puesto que la mitad es UTF y la mitad es ISO.

Para resolver ese problema podrías intentar lo siguiente:

Primero usa InputStreamReader en lugar de FileReader, el constructor de InputStreamReader tiene un segundo parámetro para indicar el charset, asegúrate que ese segundo parámetro es el charset en el que está guardado el documento que estas leyendo.

Segundo asegúrate completamente que el archivo JSP está guardado en UTF y tiene el encabezado UTF, o en su defecto que está guardado en ISO y tiene el encabezado ISO. El archivo de salida (traducido.txt) no es problema después de estas modificaciones.

Eso es lo que yo haría, pero también comprendo que es complejo, algunas de esas operaciones dependen hasta del sistema operativo que estas usando y es difícil saber con exactitud si te va a funcionar de esta forma.

Saludos,