Парсер Apache Commons CSV: не может прочитать значения

Я использую Apache Commons CSV Parser для преобразования CSV в карту. На карте я не смог прочитать некоторые значения через intellij отладчик. если я вручную наберу map.get("ключ"), значение будет нулевым. Однако, если я скопирую и вставлю ключ с карты, я получу данные. Не могу понять, что происходит не так. Любые указатели помогут. Спасибо

Вот мой код синтаксического анализатора CSV:

 private CSVParser parseCSV(InputStream inputStream) {
        System.out.println("What is the encoding "+ new InputStreamReader(inputStream).getEncoding());
        try {
            return new CSVParser(new InputStreamReader(inputStream), CSVFormat.DEFAULT
                    .withFirstRecordAsHeader()
                    .withIgnoreHeaderCase()
                    .withSkipHeaderRecord()
                    .withTrim());
        } catch (IOException e) {
            throw new IPRSException(e);
        }
    }

2 ответа

Решение

В строках был странный символ (Справка: Чтение UTF-8 - маркер спецификации). Приведенный ниже синтаксис поможет решить проблему

header = header("\uFEFF", "");

в java используйте UnicodeReader:

      String path = "demo.csv";
CSVFormat.Builder builder = CSVFormat.RFC4180.builder();
CSVFormat format = builder.setQuote(null).setHeader().build();

InputStream in = new FileInputStream(new File(path));
CSVParser parser = new CSVParser(new BufferedReader(new UnicodeReader(in)), format);
Другие вопросы по тегам