Парсер 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);