Author Topic: Leer caracteres acentuados y "ñ" de un fichero csv  (Read 16569 times)

dkanova

  • Newbie
  • *
  • Posts: 25
  • Karma: 0
    • View Profile
Leer caracteres acentuados y "ñ" de un fichero csv
« on: Febrero 01, 2011, 05:45:55 pm »
Buenas!!

Estoy tratando de leer un fichero csv y cuando aparece una palabra acentuada me muestra un rombo negro con una ? dentro (que si imprimo su valor por pantalla es  � ) en la posicion del caracter acentuado (o con ñ).

he probado toda clase de conversiones que se me han ocurrido para ver si obteniendo su caracter decimal o hexadecimal podia sacar el valor correcto, pero tampoco me devuelve los correctos.

Alguna idea sobre como transformar estos caracteres al leerlos?

La lectura la hago con un BufferedReader normal

while ((linea = br.readLine())!=null){
   StringTokenizer token = new StringTokenizer(linea,";");
   codigos.add(Integer.parseInt(token.nextToken()));
   String provincia = token.nextToken();
   provincias.add(provincia);
}      



fpuga

  • Newbie
  • *
  • Posts: 5
  • Karma: 0
    • View Profile
    • Conocimiento Abierto
Re: Leer caracteres acentuados y "ñ" de un fichero csv
« Reply #1 on: Febrero 01, 2011, 06:12:45 pm »
Prueba a usar una librería como opencsv
http://opencsv.sourceforge.net/

dkanova

  • Newbie
  • *
  • Posts: 25
  • Karma: 0
    • View Profile
Re: Leer caracteres acentuados y "ñ" de un fichero csv
« Reply #2 on: Febrero 01, 2011, 06:38:59 pm »
Hola:

gracias por contestar. Perdona mi ignorancia, pero cómo se usa esa librería? estoy empezando a programar con esto y no se ni de donde descargarla, ni como importarla.... :(

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5473
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Leer caracteres acentuados y "ñ" de un fichero csv
« Reply #3 on: Febrero 01, 2011, 06:59:40 pm »
El problema es la codificación de caracteres. El fichero debe usar un tipo de codificación y tu programa java otro.

Cuando crees el BufferedReader, pásale en el constructor un InputStreamReader. Este tiene un constructor en que su segundo parámetro admite el tipo de codificación.

new BufferedReader (new InputStreamReader (new FileInputStream(....), "ISO-8859-1")));

donde "ISO-8859-1" es el juego de caracteres que quieras usar. He puesto un valor por poner algo, pero tú debes intentar averiguar qué código de caracteres está usando el fichero, que dependerá posiblemente del editor que hayas usado para crearlo.

Se bueno.

dkanova

  • Newbie
  • *
  • Posts: 25
  • Karma: 0
    • View Profile
Re: Leer caracteres acentuados y "ñ" de un fichero csv
« Reply #4 on: Febrero 01, 2011, 07:01:39 pm »
He comprobado que mi programa usa utf 8, pero ¿como compruebo la codificación del fichero? y si es distinta de utf 8, ¿como se cambia?

dkanova

  • Newbie
  • *
  • Posts: 25
  • Karma: 0
    • View Profile
Re: Leer caracteres acentuados y "ñ" de un fichero csv
« Reply #5 on: Febrero 01, 2011, 07:32:38 pm »
Ya he conseguido cambiar las propiedades del fichero abriendolo con el bloc de notas y ya utilizando

 new BufferedReader(new InputStreamReader(new FileInputStream(....), "UTF-8")); y con eso me ha funcionado

Muchas gracias por la ayuda
 ;)

 

ey