扩展的ascii代码

时间:2017-04-17 08:16:54

标签: java csv apache-camel extended-ascii bindy

我正在使用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”

非常感谢你的帮助

吉勒

3 个答案:

答案 0 :(得分:1)

你可以尝试在Camel bindy中列出的案例3和案例4

http://camel.apache.org/bindy.html

different case's

答案 1 :(得分:0)

section sign (§)是十进制的167而不是164。

将分隔符更改为\u00A7,如下所示:

@CsvRecord(separator = "\u00A7")
public class Employee { ... }

答案 2 :(得分:0)

知道了。 这是一个编码问题。无法读取该字符,并被65533(unicode)替换字符替换。

我通过将charset = ISO-8859-1设置为读取csv文件的ftp连接来解决它。