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

Java 使用Kettle CSV阅读器时,无法读取特殊字符,java,kettle,Java,Kettle,我有一个CSV文件,它有几个值和特殊字符。我也有这个“特殊”的性格。如何在读取或写入文件时忽略它? 我已使用KettleCSVreader读取文件数据 public Map<String,List<String>> readCSV (Map<String, String> field, String delimiter,String fileLocation,String enclosure) { csvDataReader =new CsvDataRea

我有一个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;

}
publicmap readCSV(映射字段、字符串分隔符、字符串文件位置、字符串附件){
csvDataReader=新的csvDataReader(文件位置、headerPresent、分隔符、存储模块!=null?存储模块:“\”,行限制);
csvvalue=csvDataReader.loadData();
列表标题=新建ArrayList();
List selectedClomnVals=new ArrayList();
Map fieldValues=新建LinkedHashMap();
headers=csvDataReader.getHeader();
for(字符串nm:field.keySet()){
字符串键=nm;
字符串值=field.get(nm.toString().trim();
int index=headers.indexOf(值);
selectedClomnVals=csvDataReader.getColumnData(索引);
fieldValues.put(键,selectedClomnVals);
}
返回字段值;
}
在读取该特殊字符时,我遇到一个异常。在读取或写入文件时,是否有任何方法可以忽略该字符。

查看的代码,它使用一个来读取输入,而不指定字符集。在这种情况下,InputStreamReader使用默认字符集。

要么为Kettle代码编写扩展名,要么修改Kettle代码并贡献给社区,要么更改默认字符集。

您尝试过什么吗?显示您的代码。文件是如何编码的?@LutzHorn请现在查看。您会遇到什么异常?出现一些不同的错误。因为Kettle CSV阅读器采用默认转义序列。