Websphere.MQ 通信编码错误
Wrong encoding in Websphere.MQ communication
我最近遇到了我试图从一个 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);
尽管 MQManager(源和目标)在配置集中具有相同的代码页 (852),但目标 MQManager 上的消息 "WARSZAWA" 被解码为 "WAęS]AWA"。
我哪里出了问题?
基于这篇知识中心文章:
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。
我最近遇到了我试图从一个 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);
尽管 MQManager(源和目标)在配置集中具有相同的代码页 (852),但目标 MQManager 上的消息 "WARSZAWA" 被解码为 "WAęS]AWA"。
我哪里出了问题?
基于这篇知识中心文章:
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。