0

当没有用两个字节表示的变音符号时,解组消息是可以的,否则它会抱怨长度失败。我试图将正文转换为字符串类型并设置字符集 utf-8

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

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

事实上,我认为 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进行编码的用法,不知道是否可以:

在注册表中找不到数据格式 - Camel

4