使用OpenCSV解析没有BOM的UTF-8文档会导致第一列无法读取。如果以带有BOM的UTF-8编码作为输入,则可以正确地解析相同的文档内容。我已经将字符集明确设置为UTF-8。"最初的回答"
我已经创建了一个示例项目,可以重现该问题:https://github.com/dajoropo/csv2beanSample 运行单元测试,您可以看到没有BOM的UTF-8文件失败了,而有BOM的文件则可以正确运行。
错误出现在第二个断言中,因为第一列未被读取。结果是: [Bean [a=null, b=second, c=third]] 有什么提示吗?
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();
我已经创建了一个示例项目,可以重现该问题:https://github.com/dajoropo/csv2beanSample 运行单元测试,您可以看到没有BOM的UTF-8文件失败了,而有BOM的文件则可以正确运行。
错误出现在第二个断言中,因为第一列未被读取。结果是: [Bean [a=null, b=second, c=third]] 有什么提示吗?