Когда нет диакритических знаков, представленных двумя байтами, рассортировка сообщения в порядке, в противном случае он не жалуется на длину. Я попытался преобразовать тело в строку ввода и установить кодировку utf-8.
<convertBodyTo type="java.lang.String" charset="UTF-8" />
прежде чем разбирать с помощью BeanIO на маршруте Camel, но это не помогает. Как правильно решить проблему?
На самом деле, я думаю, что цель convertBodyTo может заключаться не в том, чтобы сообщить какому-то классу, который должен выполнять десортировку, что фактическая строка, хотя и объявленная фиксированной длины, может быть переменной длины, а в том, чтобы выполнить фактическое преобразование? Но для этого нужно, чтобы я сначала сказал где-нибудь, что фактическим источником является utf-8, возможно, из конечной точки. Затем я могу временно преобразовать его в некоторую кодировку, которая имеет представление однобайтовой кодировки перед демаршалингом, а затем обратно в utf-8?
После того, как у меня возникло предположение, что цель состоит в том, чтобы предоставить BeanIO информацию о том, какую кодировку использовать, я придумал:
<dataFormats>
<beanio id="parseTransactions464" mapping="mapping.xml" streamName="Transactions464" encoding="UTF-8"/>
</dataFormats>
но это дает мне:
Исчерпан после попытки доставки: 1 поймано: java.lang.NullPointerException: charset
Я в основном скопировал использование кодирования с помощью beanio dataFormat отсюда, я не знаю, нормально ли это: