問題描述:
用java寫了一個向MQ隊列發送消息的程序,MQEnvironment.CCSID = 1381並且隊列的CCSID也是1381。但是在WebSphere MQ資源管理器中瀏覽隊列消息時,發現數據的格式是空白,CCSID是819,編碼是273。並且消息裏面的中文都是亂碼。折騰了一下午終於找到問題的根源,原來是MQMessage這個類在作怪。它繼承了MQMD這個類,這個類包含發送消息的控制信息。其中就包含上述三個屬性的配置,默認值就是上面給出的,詳細信息請查閱官方文檔。
解決方法:
// Define a simple WebSphere MQ Message ...
MQMessage msg = new MQMessage();
msg.encoding = 546;
msg.characterSet = 1381;
msg.format = MQConstants.MQFMT_STRING;
問題總結:
官方文檔相當的不靠譜,數據不好聽的網絡語“坑爹呢”。文檔中給出encoding屬性的宏中根本就沒有對應546的定義,characterSet 屬性的宏也沒有對應1381的定義。