2012-01-05 24 views
9

我讀一個CSV文件下載的形式谷歌趨勢之間增加的空間在記事本中打開時,這裏有文件的內容(第一個只有兩行):閱讀CSV文件中的每個字符

法拉利(標準誤差)
0.735 2%

當我使用readline線讀出包含各字符之間的空間,在上述情況下,輸出是讀出的文件:

˚FËR R A R I FËR R A R I(式T dËR RöR)
0。 7 3 5 2%

(還有「法拉利」和「法拉利」之間和0.735之間,2%的選項卡,其計算器未示出)

在每一行的末尾換行符也讀取的兩個倍。 這是爲什麼?任何解決方案

這裏是我使用的讀取文件的代碼:

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

編輯:也有在文件的起始

Edut讀一些奇怪的字符:得到了解決

這是編碼問題,將第一行改爲:

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

貌似Unicode的給我。 – 2012-01-05 04:33:17

+0

我在機器上運行了您的確切代碼並正確打印。你在哪個環境中運行? Windows 7,Eclipse Helios在這裏。 – Logan 2012-01-05 04:47:19

+0

我使用的是Windows 7和eclipse。您已從我的問題中複製該文件。使用此文件:http://www.google.com/trends/viz?q=ferrari&date=2011-9&geo=all&graph=all_csv&sort=0&scale=1&sa=N – 2012-01-05 04:50:40

回答

13

這是d用於字符編碼......我剛剛從趨勢中下載了文件,並嘗試過,它也遇到了同樣的問題。

我這得到周圍如果我使用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); 
     } 
    } 
}