使用Kettle CSV阅读器时无法读取特殊字符

时间:2014-02-04 09:24:38

标签: java kettle

我有一个CSV文件,其中包含多个值和特殊字符。我也有这个“¡°”的特殊角色。如何在读取或写入文件时忽略它? 我使用KettleCSVreader来读取文件数据。

public Map<String,List<String>> readCSV (Map<String, String> field, String delimiter,String fileLocation,String enclosure) {

 csvDataReader =new CsvDataReader(fileLocation, headerPresent, delimiter,enclosure!=null?enclosure:"\"" , rowLimit);

 csvvalue = csvDataReader.loadData();

 List<String> headers=new ArrayList<String>();
 List<String> selectedClomnVals=new ArrayList<String>(); 
 Map<String,List<String>> fieldValues = new LinkedHashMap<String, List<String>>();
 headers=csvDataReader.getHeader();
 for (String nm : field.keySet()) {
        String key = nm;
        String value = field.get(nm).toString().trim();
        int index=headers.indexOf(value);

        selectedClomnVals=csvDataReader.getColumnData(index);
        fieldValues.put(key, selectedClomnVals);    
    }

  return fieldValues;

}

在阅读那个特殊的特殊字符时,我得到了一个例外。有什么方法可以在读取或写入文件时忽略该字符。

1 个答案:

答案 0 :(得分:1)

查看CsvDataReader的代码,它使用InputStreamReader来读取输入,而不指定Charset。在这种情况下,InputStreamReader使用默认的字符集。
编写Kettle代码的扩展,修改Kettle代码并为社区做出贡献或更改默认字符集。