2016-09-21 2 views
1

Недавно я столкнулся с проблемой неправильного кодирования данных сообщений, которые я пытаюсь отправить из одного MQManager в другой.Неверное кодирование в сообщении Websphere.MQ

Мой C# код, который отправляет сообщение в следующей последовательности:

var mqMessage = new MQMessage() 
{ 
    CharacterSet = MQC.MQCCSI_Q_MGR, 
    Format = MQC.MQFMT_STRING 
}; 

mqMessage.MessageId = Encoding.Default.GetBytes(message.MessageId); 
mqMessage.WriteString(message.Message); 
writeQueue.Put(mqMessage, _putMsgOptions); 

Несмотря на то, что оба MQManagers (источника и назначения) имеет страницу тот же код (852) в наборе конфигурации, сообщение «WARSZAWA» в пункте назначения MQManager декодируется как «WAęS AWA».

Где я делаю проблему?

+0

Класс MQMessage не имеет свойства MessageIdEncoding. Попробовал скомпилировать ваш фрагмент, но он не компилируется. Я думаю, вы пропустили равные после MessageId, строка должна была быть mqMessage.MessageId = Encoding.Default.GetBytes (message.MessageId); – Shashi

+0

Да, конечно, я отредактировал его. – Sudet

ответ

2

На основании этой статьи knowledgecenter:

http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.dev.doc/q111220_.htm

Метод WriteString не преобразует символьные данные при установке CharacterSet = MQC.MQCCSI_Q_MGR, так что вы отправляете свои данные в Unicode.

В зависимости от того, как вы читаете его на принимающей стороне, это может вызвать вашу проблему.

Я предлагаю вам установить CharacterSet сообщений в CCSID, который вы хотите использовать. Каждое сообщение обозначает кодовую страницу, используемую для символьных данных в ней, вы никогда не должны зависеть от CCSID менеджера очереди.

+0

Я попытался установить CharacterSet на конкретный номер, но все еще была проблема, которую я описал. – Sudet

+0

Сначала я не понял вашего ответа, но в конце концов это было правильно;). Проблема заключалась в кодировании сообщения с использованием MQC.MQCCSI_Q_MGR, как вы сказали, и попытки декодирования сообщения с использованием другого набора символов. Когда я установил фиксированную кодовую страницу в сообщении, проблема была решена;). благодаря – Sudet

Смежные вопросы