2017-04-17 73 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連接來解決它。