WebSphere Message Service Clients for C/C++ and .NET, Version 1.2 作業系統: Linux, Windows

編碼字集 ID (CCSID)

對 C 或 C++ 來說, 物件要遞送給 XMS 或要從中擷取的字元資料字串可能都需要進行轉換。物件的 XMSC_CLIENT_CCSID 內容會將物件所用的字碼頁告知 XMS

當 C 或 C++ 應用程式中的物件經由 API 傳遞字元資料字串給 XMS 時, 若有必要,XMS 會將字串中的字元資料從物件所用的字碼頁, 轉換成 XMS 要求資料所需採用的字碼頁。同樣地, 當物件經由 API 接收 XMS 中的字元資料字串時, 若有必要,XMS 會將字串中的字元資料從資料目前所用的字碼頁, 轉換成該物件所用的字碼頁。因此,為了轉換字串中的字元資料, XMS 必須知道物件目前所用的是哪種字碼頁。

ConnectionFactory、Connection、Session、MessageProducer 或 MessageConsumer 物件的 XMSC_CLIENT_CCSID 內容會指定物件目前所用的字碼頁。XMSC_CLIENT_CCSID 內容的值為一個會識別字碼頁的編碼字集 ID (CCSID)。XMS 會在應用程式建立這些物件之一時設定內容, 但應用程式可在之後變更其值。

當應用程式啟動時,XMS 會從應用程式執行所在的環境, 衍生適合應用程式的 CCSID。這個 CCSID 稱為 程序 CCSID。應用程式可呼叫 xmsSetClientCCSID() 隨時變更程序 CCSID。這是一個不屬於任何類別的 C 函數, 但 C++ 應用程式也可以使用該函數。

當應用程式建立 Connection Factory 時,XMS 會設定該物件的 XMSC_CLIENT_CCSID 內容。如果 Connection Factory 是從擷取自受管理物件儲存庫的物件定義來建立, 且物件定義有指定 XMSC_CLIENT_CCSID 內容的值, 則 XMS 會採用此值來設定內容。否則,XMS 會將內容設為特殊值 XMSC_CCSID_PROCESS,表示該 Connection Factory 所用的是程序 CCSID 所識別的字碼頁。

當應用程式使用 Connection Factory 來建立連線時, XMS 會將 ConnectionFactory 物件的 XMSC_CLIENT_CCSID 內容複製到新建的 Connection 物件中。 XMS 只會在應用程式建立連線時才會複製內容。如果之後應用程式變更 ConnectionFactory 物件的 XMSC_CLIENT_CCSID 內容值, XMS 並不會將該項變更傳送到 Connection 物件的 XMSC_CLIENT_CCSID 內容中。

同樣地,當應用程式使用連線來建立階段作業時,XMS 會將 Connection 物件的 XMSC_CLIENT_CCSID 內容複製到新建的 Session 物件中。而當應用程式使用階段作業來建立訊息生產者或訊息使用端時, XMS 會將 Session 物件的 XMSC_CLIENT_CCSID 內容複製到新建的 MessageProducer 或 MessageConsumer 物件中。在這些情況中, XMS 都只會在應用程式建立物件時才會複製內容。

應用程式可呼叫 PropertyContext 類別的「設定整數內容」方法, 隨時變更物件的 XMSC_CLIENT_CCSID 內容值。應用程式可將內容設為下列值之一:
編碼字集 ID (CCSID)
物件使用指定 CCSID 所識別的字碼頁。如果應用程式指定的 CCSID 無效, 或者平台不支援所指定 CCSID 的字碼頁轉換, 則呼叫將會失敗,且 XMS 會傳回錯誤碼 XMS_E_ILLEGAL_PROPERTY_VALUE。
XMSC_CCSID_UTF8
物件使用 Unicode 資料的 UTF-8 表示法。
XMSC_CCSID_UTF16
物件使用 Unicode 資料的 UTF-16 表示法。
XMSC_CCSID_UTF32
物件使用 Unicode 資料的 UTF-32 表示法。
XMSC_CCSID_PROCESS
物件使用程序 CCSID 所識別的字碼頁。每當 XMS 需要判斷物件所用的字碼頁時, 即會查詢程序 CCSID。如果應用程式呼叫 xmsSetClientCCSID() 而變更程序 CCSID,XMS 在下次需要判斷物件所用的字碼頁時,會偵測變更。

這是一個特殊的內容值, 而不是實際的 CCSID。

XMSC_CCSID_HOST
物件使用衍生自應用程式執行所在之環境的 CCSID 所識別的字碼頁。除非應用程式因 呼叫 xmsSetClientCCSID() 而變更了程序 CCSID, 否則,這個 CCSID 和程序 CCSID 相同。

這是一個特殊的內容值, 而不是實際的 CCSID。

XMSC_CCSID_NO_CONVERSION
不轉換物件所收到的字元資料字串。

這是一個特殊的內容值, 而不是實際的 CCSID。

往來於應用程式和 XMS 間的字元資料字串並不只限於訊息中的字串。需要轉換的字串可能位於訊息的下列任何一部分中:

XMS 需要轉換送出訊息中的字串時, XMS 會使用建立該訊息之階段作業的相關聯字碼頁。當 XMS 需要轉換送入訊息中的字串時, XMS 會使用接收該訊息之訊息使用端的相關聯字碼頁。XMS 會從相關 Session 或 MessageConsumer 物件的 XMSC_CLIENT_CCSID 內容值來判斷字碼頁。

視所需轉換的資料量以及轉換頻率而定,轉換訊息中的字串可能會影響效能。如果您將應用程式設計成將訊息通訊量最大化, 您可能需要考慮採用能夠降低所需之資料轉換量的方法。以下兩個範例說明其做法:
註: .NET 應用程式不需要 XMSC_CLIENT_CCSID 內容。在 .NET 中, 會使用原生的 .NET 字串類別來傳遞所有字串。由於這種類別的編碼固定, 因而不需要進一步的資訊來解譯它。

Concept topic

使用條款 | 評比此網頁

時間戳記前次更新: 25 Apr 2006
(C) Copyright IBM Corporation 2005. All Rights Reserved.
本資訊中心採用 Eclipse 技術。(http://www.eclipse.org)