使用beanio和camel解组fixedlength utf-8字符串

时间:2018-02-20 08:59:01

标签: utf-8 apache-camel unmarshalling bean-io fixed-length-record

如果没有用两个字节表示的变音符号,则可以解组消息,否则无法抱怨长度。我试图将body转换为字符串并设置charset utf-8

<convertBodyTo type="java.lang.String" charset="UTF-8" /> 

在使用Camel路由中的BeanIO进行解组之前,但它没有帮助。解决问题的正确方法是什么?

实际上,我认为convertBodyTo的目的可能不是告诉某些应该进行解组的类虽然声明了固定长度的实际字符串,但可能是可变长度,但要进行实际转换?但这要求我首先告诉某个地方实际的源是utf-8,可能来自端点。然后我可以暂时将它转换为一些在解组之前具有单字节字符集表示形式的字符集,然后再返回到utf-8?

在得到关于为BeanIO提供哪些charset使用信息的建议之后,我想出了:

<dataFormats>
 <beanio id="parseTransactions464" mapping="mapping.xml" streamName="Transactions464" encoding="UTF-8"/>
</dataFormats>

但是这给了我:

传递尝试后用尽:1捕获:java.lang.NullPointerException:charset

我基本上从这里复制了使用beanio dataFormat编码的用法,我不知道它是否正常:

Cannot find data format in registry - Camel