我正在使用Camel Bindy来处理我从第三方公司收到的csv文件。
在他们的csv中,他们使用扩展的ascii表中的分隔符:“\ u00a4”(十进制代码164)。
我试图像这样设置bindy:
@CsvRecord(separator = "\u00a4")
但它无法分隔列
当我用更标准的东西更改csv分隔符时,如“;”一切正常。由于这个csv是从外部公司发送的,我不能自己改变它。
有没有办法让Bindy支持这个?
@CsvRecord(separator = "§")
public class Employee {
@DataField(pos = 1)
private String employeeId;
@DataField(pos = 2, pattern = "dd/MM/yyyy")
private Date startDate;
@DataField(pos = 3, pattern = "dd/MM/yyyy")
private Date endDate;
@DataField(pos = 4)
private Character code;
// Getters and Setters
}
CSV内容: “aC1aoC3” § “2017年12月4日” § “2017年12月4日” § “A” “aC1aoC3” § “13/04/2017” § “13/04/2017” § “A” “aC1aoC3” § “14/04/2017” § “14/04/2017” § “A” “aC1aoC3” § “15/04/2017” § “15/04/2017” § “A” “aC1aoC3” § “16/04/2017” § “16/04/2017” § “U” “aC1aoC3” § “17/04/2017” § “17/04/2017” § “U” “aC1aoC3” § “18/04/2017” § “18/04/2017” § “U”
非常感谢你的帮助
吉勒
答案 0 :(得分:1)
答案 1 :(得分:0)
section sign (§)
是十进制的167而不是164。
将分隔符更改为\u00A7
,如下所示:
@CsvRecord(separator = "\u00A7")
public class Employee { ... }
答案 2 :(得分:0)
知道了。 这是一个编码问题。无法读取该字符,并被65533(unicode)替换字符替换。
我通过将charset = ISO-8859-1设置为读取csv文件的ftp连接来解决它。