Верблюд 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
Понял. Это была проблема с кодировкой. Символ не может быть прочитан и был заменен на 65533 (Unicode) символ замены.
Я решил это, установив charset=ISO-8859-1 для подключения ftp, читая CSV-файл.
section sign (§)
167 в десятичном, а не 164.
Измените разделитель на \u00A7
как это:
@CsvRecord(separator = "\u00A7")
public class Employee { ... }