编码JMS TextMessage

问题描述 投票:5回答:2

我正在接收来自JMS MQ队列的消息,这些消息应该是utf-8编码的。然而,在使用msgText = ((TextMessage)msg).getText();阅读时,我得到了非标准字符存在的问号。在使用bytemessage时似乎可以指定编码,但我无法在读出TextMessage时找到指定编码的方法。有没有办法解决这个问题,还是应该按bytemessages

character-encoding jms
2个回答
3
投票

我们尝试将Dfile.encoding="UTF-8"添加到Websphere的jvm中,我们补充道

source = new StreamSource(new ByteArrayInputStream(
     ((TextMessage) msg).getText().getBytes("UTF-8")));

在我们的MessageListener。这对我们有用,所以我们取出了Dfile.encoding,它仍然适用于我们。

由于Websphere的首选最低配置,我们决定以这种方式离开,同时考虑到我们可以通过文件或数据库中的设置更轻松地切换UTF-8字符串。


1
投票

如果文本未正确解码,那么客户端可能不会使用utf-8编解码器发送消息;这应该工作:

byte[] by = ((TextMessage) msg).getText().getBytes("ISO-8859-1");
String text = new String(by,"UTF-8");
© www.soinside.com 2019 - 2024. All rights reserved.