代码来源:https://blog.csdn.net/qq_21084687/article/details/84333188
如何在此基础上,解析UTF-8带BOM的csv文件并转成javabean对象?
使用UnicodeReader
https://blog.csdn.net/zh_fn/article/details/22380055
https://blog.csdn.net/jianglinghao123/article/details/50922996
public class CsvUtil {
/**
* 日志对象
*/
private static final Logger LOGGER = LoggerFactory.getLogger(CsvUtil.class);
/**
* 解析csv文件并转成bean
* @param file csv文件
* @param clazz 类
* @param <T> 泛型
* @return 泛型bean集合
*/
public <T> List<T> getCsvData(MultipartFile file, Class<T> clazz) {
BOMInputStream in; //这里
try {
in = new BOMInputStream(file.getInputStream(), Charset.forName(GBK")); //这里,如果是别的编码,这里照着修改下
} catch (Exception e) {
LOGGER.error(Constant.LOG_FOMAT_TYPE_TWO,
ErrorCode.FILE_LOAD_ERROR.getErrorCode(),
ErrorCode.FILE_LOAD_ERROR.getMessage(),
e.getMessage());
throw BaseException.of(ErrorCode.FILE_LOAD_ERROR.of());
}
HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
strategy.setType(clazz);
CsvToBean<T> csvToBean = new CsvToBeanBuilder<T>(in)
.withSeparator(',')
.withQuoteChar('\'')
.withMappingStrategy(strategy).build();
return csvToBean.parse();
}
}