1. 程式人生 > >WebSphere MQ中的CCSID

WebSphere MQ中的CCSID

net windows -c div arc .cn hive html 不支持

CCSID是一個字符集的標識。作為unicode標準通過定義一個字符集內每個字符要對應那個數字值的方式定義了一個字符集。這說明CCSID就是一個定義字符集順序的標識數碼罷了。IBM的字符標識架構在文檔 SC09-1390(http://www-304.ibm.com/jct03002c/software/globalization/cdra/index.jsp;http://publib.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/FOCREF00/CCONTENTS)中做了定義,CCSID是IBM用來標識字符序列的標識代碼。這個架構定義了SDCS(單字符集)的CCSID值,MBCS(多字符集)的CCSID值和混合單字符多字符集的混合CCSID值。多字符集的CCSID一般用於語言,比如中文,日文,韓文,這些語言的字符量很大,無法用單字節的碼值來代表。

CCSID間的轉換有多種類型。其中一種轉換就是從一種CCSID到另一種CCSID的轉換,舉例來說從ASCII(CCSID 1252)到EBCDIC(CCSID 37)。另一種是從串數據到另一種數據類型的轉換。舉例來說轉換字符串數據到數值。在所有的這種類型的轉換中都必須標識CCSID值來保證轉換的正確進行。

但是轉換是有要求的,第一種轉換的前提是轉到的 CCSID的類型中要包含轉換前的CCSID類型中要轉換的字符,比如,如果從CCSID1381(S-CHGBPC-DATA) 類型的簡體中文的PC編碼中的一個中文字符"中"字到其他CCSID編碼轉換到的編碼起碼要求這個CCSID編碼的字符集中包含同樣的"中"字。

runmqsc MQ名,然後輸入

Cmd代碼 技術分享圖片
  1. dis QMGR

顯示全信息,其中就有CCSID。

技術分享圖片 由上可知,我服務器上隊列管理器的CCSID是1381,客戶機代碼假設通過客戶機中 MQI 的字符數據位於機器所配置的 CCSID 中。如果此 CCSID 是一個不支持的 CCSID 或不是必需的 CCSID,可以用 MQCCSID 環境變量覆蓋它,例如,在 Windows上:

Cmd代碼 技術分享圖片
  1. SET MQCCSID=1381

或者,在 UNIX系統上:

Cmd代碼 技術分享圖片
  1. export MQCCSID=1381

安裝好了MQ Server端並新建了QMGR,可以通過上面方法更改其MQCCSID,我們環境中所有QMGR的MQCCSID都是1381。

在MQ Server上面任何用戶在往該MQGR的queue裏面放消息時,消息使用的字符編碼都是1381(與QMGR的設定相同),這裏即使在用戶的profile裏面export MQCCSID等於別的,結果消息也是始終與QMGR的設定保持一樣。

最後,export MQCCSID只有在MQ Client端才有用,通過export MQSERVER 連接到MQ Server的MQ Client端可以給用戶的profile裏面設定MQCCSID,如環境AIX上面如果沒有給用戶特別設定MQCCSID則default的是819即en_US.ISO8859-1。

參考文章:http://blog.chinaunix.net/uid-20652643-id-1906356.html

http://www.cnblogs.com/fromchaos/archive/2010/02/24/1672736.html

WebSphere MQ中的CCSID