Java Mule 中的组件不使用项目的 UTF-8 编码

Java Component in Mule does not use project's UTF-8 encoding

我在 Mule 中有一个 java 组件,它是 return 字符串。当我从 java 组件中打印该字符串时,它在控制台中显示为 UTF-8 就好了。但是,当我将returnthis作为payload时,后续的logger和所有下游组件就无法再读取UTF-8字符了。我已确认我的项目的编码设置设置为 'UTF-8'。我还:

  1. 在 Java 组件前后设置 MULE_ENCODING=UTF-8,作为出站 属性 和调用 属性。
  2. 在 mule 表达式中设置消息的编码,但失败了 message.setEncoding('UTF-8'),错误指出找不到方法 setEncoding()
  3. 在 java 组件中使用以下内容:

    eventContext.getMessage().setPayload(myString);
    eventContext.getMessage().setEncoding("UTF-8");
    return  eventContext.getMessage().getPayload(); 
    
  4. 切换到 java 转换器而不是组件,在转换器上使用以下配置,显式地将编码设置为 "UTF-8"。

    <custom-transformer encoding="UTF-8"
      class="myDomain.myJavaTransformer" doc:name="Java"/>
    

我不确定还有什么可以尝试确保来自 java component/transformer 的有效负载不被解释或转换为另一种编码...

输出应为:“杰出新环境科学家”

记录器当前输出的是“杰出新环境科学家”。例如,我已通过将 encoding=UTF-8 添加到任何 VM 端点来在流程的其他部分更正此问题。我还确认这可以在流程中其他地方的记录器中正确打印。

从 java class 组件和后续的 mule 记录器引用的 return 中编辑字符串后似乎发生了一些事情。 .

在 java 组件

之后立即尝试 <object-to-string-transformer encoding="..." />

您如何阅读 RSS 提要?如果它正在使用端点,请尝试为该端点设置 'encoding' 属性?

我也遇到了编码问题。这与您的情况 完全相似,但我采取了这一行动并且对我有效。 (字节到数组使用 java 序列化)

<set-property propertyName="MULE_ENCODING" value="UTF-8" doc:name="Property" />

<byte-array-to-string-transformer encoding="UTF-8" doc:name="Byte Array to String"/>

我在消息进入我的流程时使用了它。

包装器中也有属性,您也可以设置它。