Использование OpenCSV для анализа документов UTF-8 без BOM приводит к тому, что первый столбец не читается.Предоставление в качестве входных данных того же содержимого документа, но закодированного в UTF-8 с спецификацией, работает правильно.
Я специально установил кодировку в UTF-8
fileInputStream = new FileInputStream(file);
inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
reader = new BufferedReader(inputStreamReader);
HeaderColumnNameMappingStrategy<Bean> ms = new HeaderColumnNameMappingStrategy<Bean>();
ms.setType(Bean.class);
CsvToBean<Bean> csvToBean = new CsvToBeanBuilder<Bean>(reader).withType(Bean.class).withMappingStrategy(ms)
.withSeparator(';').build();
csvToBean.parse();
IСоздан пример проекта, в котором проблема может быть воспроизведена: https://github.com/dajoropo/csv2beanSample
Запустив модульное тестирование, вы увидите, как файл UTF-8 без спецификации завершается сбоем и работает с спецификацией правильно.
Ошибка возникает во втором утверждении, потому что первый столбец не читается.Результат:
[Bean [a = null , b = секунда, c = третий]]
Любая подсказка?