2012-01-05 9 views
9

estoy leyendo una tendencia formulario de google archivo CSV descargado, aquí están los contenidos del archivo cuando se abre en el bloc de notas (primero dos líneas solamente):archivo CSV de lectura en Java añade espacio entre cada carácter

Ferrari Ferrari (error std)
0,735 2%

Cuando leí el archivo usando readline la lectura línea contiene espacio entre cada carácter, en caso de que por encima de la salida es:

f r r i r a r i a r i r a r i r s (s t d r r o r)
0. 7 3 5 2%

(Hay pestañas entre "Ferrari" y "Ferrari" y entre 0,735 y 2%, lo que Stackoverflow no se muestra)

carácter de nueva línea al final de cada línea también se lee dos veces. ¿Por qué es eso? ¿Alguna solución?

Aquí está el código que estoy usando para leer el archivo:

BufferedReader Reader = new BufferedReader(new FileReader("trend.csv")); 
String line = null; 
while ((line = Reader.readLine()) != null) 
    System.out.println(line); 

Editar: también hay algunos caracteres extraños leído en la partida de archivo

Edut: Consiguió la solución

era el problema de codificación, cambia la primera línea a:

BufferedReader Reader = new BufferedReader(new InputStreamReader(new FileInputStream("trend.csv"), "UTF-16")); 
+5

Parece Unicode para mí. –

+0

Corrí su código exacto en mi máquina y se imprimió correctamente. ¿En qué entorno estás trabajando? Windows 7, Eclipse Helios aquí. – Logan

+0

Estoy usando Windows 7 y eclipse. Usted ha copiado el archivo de mi pregunta. Utilice este archivo: http://www.google.com/trends/viz?q=ferrari&date=2011-9&geo=all&graph=all_csv&sort=0&scale=1&sa=N –

Respuesta

13

es d Debido a la codificación de caracteres ... Acabo de descargar el archivo de tendencias y lo intenté, tenía el mismo problema.

Me metí con esto si uso el juego de caracteres UTF-16.

public class TrendReader 
{ 
    public static void main(String args[]) throws Exception 
    { 
     //BufferedReader Reader = new BufferedReader(new FileReader("trends.csv")); 
     BufferedReader Reader = new BufferedReader(new InputStreamReader(new FileInputStream("trends.csv"), "UTF-16")); 
     String line = null; 
     while ((line = Reader.readLine()) != null) 
     { 
      System.out.println(line); 
     } 
    } 
} 
Cuestiones relacionadas