Верблюд Bindy разделитель в расширенном коде ASCII

Я использую 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" § "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"

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

жилль

3 ответа

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

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

другой случай

Понял. Это была проблема с кодировкой. Символ не может быть прочитан и был заменен на 65533 (Unicode) символ замены.

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

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

Измените разделитель на \u00A7 как это:

@CsvRecord(separator = "\u00A7")
public class Employee { ... }
Другие вопросы по тегам