繁体   English   中英

使用C#将消息以ASCII格式写入MQ

[英]Write Message to MQ as ASCII using C#

我有一个XML形式的字符串或与此相关的任何字符串,并且在将BOM写入MQ时得到了BOM。 我试图在C#应用程序中将字符串转换为ASCII,但仍在MQ的消息中显示。 我以为我可以在MQMessage()中使用Encoding方法

MQQueueManager queueManager = new MQQueueManager();
queue = queueManager.AccessQueue(QueueName,
               MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
message = strInputMsg;
queueMessage = new MQMessage();
queueMessage.WriteString(message);
queueMessage.Format = MQC.MQFMT_STRING;
queueMessage.Encoding = MQC.MQENC_NATIVE;

queuePutMessageOptions = new MQPutMessageOptions();

queue.Put(queueMessage, queuePutMessageOptions);

我不确定queueMessage.Encoding行的值应该是什么。

另一个问题是将ASCII编码删除位对象标记(BOM)吗?

如果您在此处查看: https : //www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.ref.dev.doc/q111220_.htm

ReadString,ReadLine和WriteString方法在Unicode和消息的字符集之间进行转换。 参见CharacterSet

WriteString方法从Unicode转换为CharacterSet中编码的字符集。 如果CharacterSet设置为其默认值MQC.MQCCSI_Q_MGR,该值为0,则不进行任何转换,而CharacterSet设置为1200。如果将CharacterSet设置为其他值,WriteString从Unicode转换为备用值。

因此,实际上,在调用WriteString之前,.NET中有一个unicode字符串。 WriteString方法从该unicode转换为CharacterSet属性指示的CCSID,该属性默认为unicode,并为您提供字节顺序标记(BOM)的有趣的2字节前缀。 如果将其设置为例如850,则它将根据需要从unicode转换为单字节ASCII输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM