编码JMS TextMessage

时间:2010-06-04 11:17:31

标签: character-encoding jms

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:1)

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

byte[] by = ((TextMessage) msg).getText().getBytes("ISO-8859-1");
String text = new String(by,"UTF-8");