Websphere.MQ通信中的编码错误

时间:2016-09-21 10:10:56

标签: c# .net ibm-mq mq

我最近遇到了错误的编码我正试图从一个MQManager发送到另一个MQManager的消息数据的问题。

发送消息的我的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),但目标MQManager上的消息“WARSZAWA”被解码为“WAęS] AWA”。

我在哪里解决问题?

1 个答案:

答案 0 :(得分:2)

基于这个知识中心文章:

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

当您设置CharacterSet = MQC.MQCCSI_Q_MGR时,WriteString方法不会转换字符数据,因此您将以Unicode格式发送数据。

根据您在接收方的阅读方式,这可能会导致您的问题。

我建议您将消息的CharacterSet设置为您要使用的CCSID。每条消息都表示用于其中的字符数据的代码页,您不应该依赖于队列管理器的CCSID。