如何将CSV文件中的日语字段读入java bean?

时间:2011-11-03 23:42:26

标签: java csv deserialization opencsv

我尝试了几种流行的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中所示,字段包含垃圾,并且记录的数量通常是错误的。

1 个答案:

答案 0 :(得分:5)

  1. FileInputStream用于读取二进制数据流,如mp3或PNG。使用FileReader来读取字符流,而不是FIS
  2. 直言不讳:如果他们不工作,谁会关心你尝试使用的charsets?您需要确定CSV文件实际使用的编码方式,并在读取文件时设置 编码。使用FileReader时指定编码:
  3.   

    此类的构造函数假定默认字符编码和默认字节缓冲区大小是合适的。 要自己指定这些值,请在FileInputStream上构造一个InputStreamReader。