我最近遇到了错误的编码我正试图从一个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”。
我在哪里解决问题?
答案 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。