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

Acentos en Java en Linux

Estas en el tema de Acentos en Java en Linux en el foro de Java en Foros del Web. Hola a todos, tengo una aplicación, ejecutándose en Linux, desarrollada en Java y PHP, unidos mediante la librería JavaBridge, en la que (simplificando) PHP llama ...
  #1 (permalink)  
Antiguo 28/09/2012, 09:39
 
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 0
Acentos en Java en Linux

Hola a todos,

tengo una aplicación, ejecutándose en Linux, desarrollada en Java y PHP, unidos mediante la librería JavaBridge, en la que (simplificando) PHP llama a un método de Java, el cual le devuelve una línea leída de fichero y mediante PHP la muestro por pantalla.

Al sacarla por pantalla, los caracteres acentuados leídos del fichero no se ven correctamente. En cambio, si el método java devuelve una cadena que no es leída de fichero, y también contiene caracteres acentuados, sí que los muestra.

Para mayor claridad:

Contenido fichero a leer:
Código:
Esto es una línea de fichero
Métodos java:
Código:
function leeLinea(){
   String linea = ...; //lee línea de fichero "Esto es una línea de fichero"
   return linea;
}

function dameLinea(){
   return "Línea no leída de fichero";
}
Función PHP
Código PHP:
$lector = new java("Lector");
$linea_fichero $lector->leeLinea();
$linea_no_fichero $lector->dameLinea();
// La línea siguiente muestra: 'Esto es una línea leída de fichero: Esto es una l�nea le�da de fichero'
echo "Esto es una línea leída de fichero: ".$linea_fichero ;
// La línea siguiente muestra: 'Esto es una línea no leída de fichero: Esto no es una línea leída de fichero'
echo "Esto es una línea no leída de fichero: ".$linea_no_fichero
He intentado hacer un replace de los caracteres acentuados para escribirlo bien en ASCII bien tipo "á", pero nada.

Resumiendo, si Java envía una cadena acentuada, se muestra bien por pantalla; si Java lee de fichero una cadena acentuada, no se muestra bien por pantalla.

¿Alguna idea?
Muchas gracias
  #2 (permalink)  
Antiguo 28/09/2012, 09:49
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Acentos en Java en Linux

Ahí no aparece el código que utilizas para leer el fichero, pero como punto de partida te diría que revises el encoding del fichero. En linux lo normal es que sea UTF-8.

Java al leerlo, suele hacerlo con el mismo formato que el sistema operativo, pero dependiendo del método, lo lee con otro encoding si así se le ha indicado, por eso te decía lo de ver el método que lee del fichero.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 01/10/2012, 03:14
 
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Acentos en Java en Linux

Sí señor, Xerelo. No recordaba que, al leer un fichero, se podía determinar la codificación del mismo:

Código:
File f = new File("mi_archivo.txt");
InputStreamReader fr = new InputStreamReader(new FileInputStream(f), "8859_1");
BufferedReader br = new BufferedReader(fr);
Aunque el archivo está en Linux, fue creado en Windows, con una codificación ISO-8859-1.

Paso aquí la notación Java de cada formato de archivo, por si a alguien le pudiera venir bien en el futuro:

http://cafeconleche.org/books/xmljav...s/ch03s03.html

Muchísimas gracias, Xerelo ;)

Etiquetas: acentos, linux, string
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 09:30.