Кодирование JMS TextMessage - PullRequest
6 голосов
/ 04 июня 2010

Я получаю сообщения из очереди JMS MQ, которые предположительно utf-8 закодированы. Однако при чтении с использованием msgText = ((TextMessage)msg).getText(); Я получаю знаки вопроса, где присутствовали нестандартные символы. Кажется возможным указать кодировку при использовании bytemessage, но я не могу найти способ указать кодировку при считывании TextMessage. Есть ли способ решить эту проблему, или я должен нажать для bytemessages?

Ответы [ 2 ]

4 голосов
/ 25 июня 2010

Мы попытались добавить Dfile.encoding="UTF-8" к Websphere в jvm, и мы добавили

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

В нашем MessageListener. Это сработало для нас, поэтому мы убрали бит Dfile.encoding, и он все еще работает для нас.

Из-за предпочтительной минимальной конфигурации для Websphere мы решили оставить это так, также учитывая, что мы можем легче переключать строку UTF-8 настройкой из файла или базы данных.

1 голос
/ 28 августа 2012

Если текст не декодирован правильно, то, вероятно, клиент не отправляет сообщение с кодеком utf-8; это должно работать:

byte[] by = ((TextMessage) msg).getText().getBytes("ISO-8859-1");
String text = new String(by,"UTF-8");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...