我正在寻找一种通过队列发布XML消息的简洁方法。目前,我们必须检查XML encoding
声明,并确保相应地设置MQMD.ccsid
(utf-8 = 1208)。我们还将MQMD.format
设置为MQFMT_NONE
。
这似乎很好,但是有些消费者正在使用MQGMO_CONVERT
进行MQGET并且会破坏UTF-8编码。
在使用非短信时,他们应该不调用convert选项。但是他们在同一个队列中处理混合文本+非文本。
我想使用特殊的CCSID MQCCSI_EMBEDDED
,它指出编码信息是在消息中找到的,正是XML所做的。
不幸的是,将MQPUT上的CCSID设置为该值默认为QMGR的ccsid。
答案 0 :(得分:2)
如果在应用程序将消息发送到队列时将MD.Format设置为MQFMT_NONE,那么" get with convert"由接收应用程序不执行转换。
将MD.Format设置为MQFMT_STRING或接收应用程序搞砸了。
另外,您知道如果您在Java中读取一个消息到一个字符串缓冲区中,JVM会将其转换为运行JVM的编码。