代码之家  ›  专栏  ›  技术社区  ›  hdjur_jcv

使用beanio和camel解组固定长度utf-8字符串

  •  0
  • hdjur_jcv  · 技术社区  · 6 年前

    如果没有用两个字节表示的变音符号,则可以对消息进行解组,否则就无法抱怨长度。我尝试将body转换为string类型并设置字符集utf-8

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

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

    事实上,我认为convertBodyTo的目的可能不是告诉某个应该进行解组的类,实际字符串虽然声明为fixedlength,但可能是可变长度的,而是进行实际转换?但这需要我首先告诉某个地方,实际的源是utf-8,可能在from端点中。然后我可以在解组之前将其临时转换为具有单字节字符集表示的字符集,然后再转换回utf-8?

    有人建议,重点是向BeanIO提供要使用哪个charset的信息,我想到了:

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

    但这给了我:

    交付尝试后耗尽:1捕获:java。lang.NullPointerException:字符集

    我基本上是从这里复制了使用beanio dataFormat进行编码的用法,我不知道是否可以:

    Cannot find data format in registry - Camel