bindy csv кодировка отличается от локальной

Где я могу определить кодировку моего входного файла, чтобы Bindy правильно его читала? Мой входной файл ISO-8859-1, CRLF Мой локальный UTF-8 (я не хочу его менять...)

Поэтому, когда я читаю мой файл, некоторые персонажи ошибаются...

верблюд:

.process(debugProcessor)
        .unmarshal().bindy(BindyType.Csv, "mypackage.com")

Бинди:

@CsvRecord(separator = "\u0009", skipFirstLine = true)
public class elModel extends elModelGeneric{

/** Général */

@DataField(pos = 1)
/* N° id. */ String id;
...

2 ответа

Решение

Установите кодировку при чтении вашего источника. Если вашим источником является файл, это определяется следующим образом:

from("file:inbox?charset=ISO-8859-1")
    .process(debugProcessor)
    .unmarshal().bindy(BindyType.Csv, "mypackage.com")
    ...

Благодаря этой работе отлично читать файл правильно. На самом деле у меня возникли проблемы с Бинди: этот тестовый образец не работает:

from("file:inbox?charset=ISO-8859-1")
.process(debugProcessor)
.unmarshal().bindy(BindyType.Csv, "mypackage.com")
.marshal().bindy(BindyType.Csv, "mypackage.com")
.to("file:output/test.csv?charset=UTF-8");

Неправильная кодировка вывода (она содержит несколько символов "?" Для входного символа "é"). Может ли это быть связано с локалью, необходимой для установки Bindy? Я сделал несколько тестов, но не смог получить правильный вывод.

Другие вопросы по тегам