Чтение CSV-файла в Java добавляет пробел между каждым символом - PullRequest
10 голосов
/ 05 января 2012

Я читаю CSV-файл, загруженный с Google Trend, вот содержимое файла при открытии в блокноте (только первые две строки):

Ferrari Ferrari (стандартная ошибка)
0,735 2%

Когда я читаю файл с использованием readline, строка read содержит пробел между каждым символом, в вышеприведенном случае вывод:

р е р а р и м е р (с т р а н и е)
0 7 3 5 2%

(Между "ferrari" и "ferrari" есть вкладки между 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"));

Ответы [ 2 ]

14 голосов
/ 05 июля 2012

Это из-за кодировки символов ... Я только что скачал файл из трендов и попробовал, у него была та же проблема.

Я справился с этим, если использовал набор символов 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);
        }
    }
}
0 голосов
/ 15 мая 2018

Вам необходимо проверить кодировку файла и исходя из этого вы должны указать ее при чтении файла:

BufferedReader Reader = new BufferedReader(new InputStreamReader(new 
FileInputStream("trends.csv"), "UTF-8"));

Если вы ожидаете, что файл в UTF-8, то измените кодировку файла, вместо вашего кода, довольно просто, вы можете использовать любой CSV-ридер с открытым исходным кодом, например OpenOffice, чтобы прочитать этот файл и при открытии указать кодировку :)

...