2017-04-17 100 views
0

我正在使用Camel Bindy来处理我从第三方公司收到的csv文件。骆驼Bindy分隔符在扩展ASCII码

在它们的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 “§”2017/04/13“§”A“ ”aC1aoC3“§”2017/04/14“§”2017/04/14“§”A“ ”aC1aoC3“§”2017/04/15“§” “2017/04/15”§“” “aC1aoC3”§“2017/04/16”§“2017/04/16”§“/04/2017“§”ü“ ”aC1aoC3“§” 10你的帮助非常感谢

吉尔斯

+0

你能否在你的问题中包含一个示例csv(无法通过bindy解析)? – mgyongyosi

+0

我已将它添加到问题描述中。谢谢 – Gilles

回答

1

可以尝试的情况下3和在骆驼bindy上市的情况下,4

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

different case's

+0

谢谢。我试过这个:@CsvRecord(separator =“\”¤\“”)和这个 @CsvRecord(separator =“\”\ u00a4 \“”)。没有成功。 Bindy占据第一个字段 – Gilles

+0

的整行,你可以发布实际记录(来自文件)和POJO类吗? –

+0

已添加。感谢您的帮助 – Gilles

0

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

将分隔符更改为\u00A7像这样:

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

我想我有一个编码问题,因为在从Bindy收到的字符串中,我的替换序列是65533而不是分隔符。 – Gilles

0

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

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