2011-11-03 31 views
0

我試過幾種流行的CSV到Java解串器 - OpenCSV,JSefa和Smooks的 - 沒有正確地讀取文件:如何將日文字段從CSV文件讀取到java bean中?

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)); 

我已經試過字符集設置爲UTF-8,UTF-16和ISO-8859-1,當我創建的FileInputStream,但集合永遠不會填充正確。正如在調試器和System.out中看到的那樣,這些字段包含垃圾,而且通常記錄的數量是錯誤的。

+0

如何在創建FileInputStream時指定字符集? –

回答

5
  1. FileInputStream爲二進制數據的讀出流,如MP3或PNG。而不是FIS,請使用FileReader來讀取字符流。
  2. 不客氣:誰關心你嘗試使用的字符集,如果他們不工作?你需要弄清楚什麼編碼的CSV文件是實際上是使用,而設置編碼讀取文件時。要使用時FileReader指定編碼:

這個類的構造函數假設默認的字符編碼和默認字節緩衝區大小是適當的。 要自己指定這些值,請在FileInputStream上構造一個InputStreamReader。

+0

FileReader也沒有工作。問題w/FileReader是它使用JVM的默認字符集,你不能以你可以用w/FileInputStream的方式設置它。 – MebAlone

+0

我們來看看一些代碼。請修改您的問題以包含[SSCCE](http://sscce.org)。 –

+0

請仔細閱讀我的回答,特別是報價的粗體部分。 –