Разделитель Camel Bindy в расширенном коде ascii

Я использую 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"§"04.12.2017"§"04.12.2017"§"A" "aC1aoC3"§"04.13.2017"§"04.13.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"§"У"

Большое спасибо за вашу помощь

Жиль


person Gilles    schedule 17.04.2017    source источник
comment
Не могли бы вы включить в свой вопрос образец CSV (который не может быть проанализирован bindy)?   -  person mgyongyosi    schedule 17.04.2017
comment
Добавил в описание проблемы. Спасибо   -  person Gilles    schedule 17.04.2017


Ответы (3)


можете ли вы попробовать случай 3 и случай 4, которые перечислены в Camel bindy

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

различные случаи

person Koushik Ghosh    schedule 17.04.2017
comment
Спасибо. Я пробовал это: @CsvRecord (разделитель = \¤\) и этот @CsvRecord (разделитель = \¤\). Без успеха. Бинди занимает всю строку с первым полем - person Gilles; 17.04.2017
comment
Можете ли вы опубликовать фактическую запись (из файла) и класс POJO? - person Koushik Ghosh; 17.04.2017
comment
Добавлен. Спасибо за вашу помощь - person Gilles; 17.04.2017

section sign (§) это 167 в десятичном виде, а не 164.

Измените разделитель на \u00A7 следующим образом:

@CsvRecord(separator = "\u00A7")
public class Employee { ... }
person mgyongyosi    schedule 17.04.2017
comment
Я думаю, что у меня проблема с кодировкой, потому что в строке, полученной от Bindy, у меня есть последовательность замены 65533 вместо разделителя. - person Gilles; 17.04.2017

Понятно. Это была проблема с кодировкой. Этот символ не удалось прочитать, и он был заменен замещающим символом 65533 (юникод).

Я решил это, установив charset = ISO-8859-1 для ftp-соединения, читающего файл csv.

person Gilles    schedule 17.04.2017