0

我正在使用 Camel Bindy 处理从第三方公司收到的 csv 文件。

在他们的 csv 中,他们使用扩展 ascii 表中的分隔符:“\u00a4”(十进制代码 164)。

我试图像这样设置绑定:

@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"§"12/04/2017"§"12/04/2017"§"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"

非常感谢您的帮助

吉尔斯

4

3 回答 3

1

你能试试骆驼绑定中列出的案例3和案例4吗

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

不同的情况

于 2017-04-17T09:26:41.440 回答
0

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

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

于 2017-04-17T18:08:31.127 回答
0

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

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

@CsvRecord(separator = "\u00A7")
public class Employee { ... }
于 2017-04-17T15:05:09.063 回答