Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema leyendo caracteres de un fichero

Buenas

Estoy haciendo un programa Java SE en Linux Ubuntu 11.10 que lee palabras de un fichero, pero al pintar por consola las que tienen acentos o ñ o más símbolos, aparece con una interrogación de esta manera.

cr�dito, acu�ar ....

El codigo que lee del fichero es algo así

BufferedReader br = new BufferedReader(new FileReader("fichero.txt"));
while(br.ready()) {
System.out.println(br.readLine());
}

El fichero cuando lo leo desde gedit se ve bien pero si lo leo con "cat fichero.txt" se ve también con las interrogaciones. Cuando lo muestro en un JLabel también se ve con la interrogación, imagino que sea algo de la codificación unicode o UTF, pero no se como solucionarlo.
Alguna idea??

Muchas gracias
Un saludo

febrero 7, 2012 | Registered Commentercointreau17

Buenas, vamos a ver, estando en eclipse, le das al derecho en tu proyecto, seguidamente le das a "Properties" y dentro de properties se te abrá abierto una ventanita, en principio, en la que te sale ("Resource"), buscas "Text file encoding", le das a other y eliges UTF-8, en principio debería estar solucionado ;)

Un saludo!

febrero 8, 2012 | Unregistered CommenterAlarde

Buenas,

Muchas gracias por tu respuesta, pero Linux por defecto usa esa codificación y he visto en las propiedades que el Text file encoding está marcado en "Inherited from container(UTF-8) y por si acaso, he marcado en Other y selecciono UTF-8, pasa lo mismo".

Qué puede pasar?

Muchas gracias
Un saludo.

febrero 8, 2012 | Registered Commentercointreau17

Creo que el problema no es de java ni tampoco de tu código. Creo que es más problema del fichero ya que con cat te muestra los interrogantes. Prueba de abrir el fichero con el gedit copias el contenido en otro ventana de gedit (o mejor en otro editor como vim, nano, etc..) y lo grabas en otro fichero haber que hace. Me entiendes? Es más que nada por probar de que te genere otro fichero haber si está grabado con alguna codificación rara que entiende gedit y los otros no.

febrero 8, 2012 | Registered Commenterjordibr7

Prueba este código que te paso para la lectura del fichero.

/////////Método de lectura de fichero genérico
public static void leeFichero() {

try {
BufferedReader br = new BufferedReader(new FileReader("C:/miFichero.txt"));
String linea;
while ((linea = br.readLine()) != null) {
System.out.println(linea);
}
br.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}

A mi me funciona a la prefección... Por cierto, mi codificación está en Cp1252...

febrero 9, 2012 | Unregistered CommenterAlarde

Tal vez estos enlaces te den la solución:
http://docs.oracle.com/javase/7/docs/api/java/io/FileReader.html

"The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate. To specify these values yourself, construct an InputStreamReader on a FileInputStream."

http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html

febrero 9, 2012 | Registered Commenterchoces

tengo el mismo problemas, alguien ya lo arreglo?

noviembre 22, 2017 | Unregistered Commentersabas

se que tal vez ya paso demasiado tiempo y para para que quede documentado es este sitio
Esta opción me resulto:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(this.txtPath),"ISO-8859-1"));

marzo 2, 2018 | Unregistered CommenterJoshua Cleveland

Excelente amigo me fue de mucha ayuda! ISO-8859-1 es el correcto utf-8 no me funciono!

septiembre 23, 2019 | Unregistered CommenterFreddy