我已经尝试了几种流行的 CSV 到 java 反序列化器 - OpenCSV、JSefa 和 Smooks - 没有一个能正确读取文件:
First Name,Last Name
エリック,山中
花子,鈴木
一郎,鈴木
裕子,田中
政治,山村
进入我的 java 对象集合。
OpenCsv 代码:
HeaderColumnNameTranslateMappingStrategy<Contact> strat = new HeaderColumnNameTranslateMappingStrategy<Contact>();
strat.setType(Contact.class);
strat.setColumnMapping(colNameTranslateMap);
InputStreamReader fileReader=null;
CsvToBean<Contact> csv = new CsvToBean<Contact>();
fileReader = new InputStreamReader(new FileInputStream(file), "UTF-8");
contacts = csv.parse(strat, new CSVReader(fileReader));
创建 FileInputStream 时,我尝试将 Charset 设置为 UTF-8、UTF-16 和 ISO-8859-1,但该集合从未正确填充。正如在调试器和 System.out 中看到的那样,这些字段包含垃圾,并且记录的数量通常是错误的。