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