0

我陷入了以下情况,并试图找出确切的方法。

Mule 正在从 MQ 获取消息,而我从 Mule 有效负载中以字节或字符串的形式获取这些消息,它没有为窄字符提供确切的字符,实际上它为这些字符和其余字符提供了乱码消息很好好的。

我尝试使用 UTF-8 编码将有效负载作为字符串仍然具有相同的输出。

我正在使用的代码是:

MuleMessage mmsg = eventContext.getMessage();
byte[] rawMsg = mmsg.getPayloadAsBytes();

或者

String rawMsg = mmsg.getPayloadAsString();

或者

String rawMsg = mmsg.getPayloadAsString("UTF-8");

任何解决方法或替代方法都将受到高度赞赏。

4

2 回答 2

1

Mule 非常注意有效负载的数据编码,因此发送到 MQ 本身的消息(发布者实际上可能对它们进行了错误编码)或您自己对它们的处理肯定有问题。

MuleEventMuleMessage类都有一个方法getEncoding():最好使用它而不是硬编码到特定的编码。

由于您收到的是javax.jms.BytesMessages,我建议您使用标准转换器将其转换为字符串,而不是自己做,在您的 s 之后使用以下内容jms:inbound-endpoint

<byte-array-to-string-transformer encoding="..." />

encoding使用为属性发送 JMS 消息的发布者使用的实际编码。

于 2013-04-24T16:42:24.460 回答
-1

尝试使用这个表达式:

#[message.payloadAs(String)]

这将为您提供字符串格式的有效负载,因此您无需使用 byte-array-to-string-transformer。

于 2016-02-26T09:30:50.913 回答