2012-01-05 28 views
9

Tôi đang đọc một xu hướng hình thức google tập tin CSV đã tải xuống, sau đây là nội dung của tập tin khi mở bằng notepad (đầu tiên chỉ có hai dòng):tập Reading CSV trong java cho biết thêm không gian giữa mỗi nhân vật

Ferrari Ferrari (lỗi std)
0,735 2%

Khi tôi đọc các tập tin sử dụng readline dòng đọc chứa khoảng trống giữa mỗi nhân vật, trong trường hợp ở trên đầu ra là:

f r r a r i (r c r r o r)
0. 7 3 5 2%

(Có tab giữa "ferrari" và "ferrari" và giữa 0,735 và 2% mà stackoverflow không hiển thị)

nhân vật Newline ở cuối mỗi dòng cũng được đọc hai lần. Tại sao lại như vậy? Bất kì giải pháp nào?

Đây là mã tôi đang sử dụng để đọc các file:

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

Edit: cũng có một số nhân vật kỳ lạ đọc tại bắt đầu của tập tin

Edut: Got giải pháp

Đó là sự cố mã hóa, đã thay đổi dòng đầu tiên thành:

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

Có vẻ như Unicode với tôi. –

+0

Tôi đã chạy mã chính xác trên máy của tôi và mã được in chính xác. Bạn đang chạy môi trường gì? Windows 7, Eclipse Helios ở đây. – Logan

+0

Tôi đang sử dụng Windows 7 và nhật thực. Bạn đã sao chép tệp từ câu hỏi của tôi. Sử dụng tệp này: http://www.google.com/trends/viz?q=ferrari&date=2011-9&geo=all&graph=all_csv&sort=0&scale=1&sa=N –

Trả lời

13

Nó là d ue để mã hóa ký tự ... Tôi vừa tải xuống tệp từ xu hướng và đã thử, nó có cùng vấn đề.

Tôi đã giải quyết vấn đề này nếu tôi sử dụng bộ ký tự 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); 
     } 
    } 
} 
Các vấn đề liên quan