支援混合區域字集或 UTF-8 多國語言資料庫

這個主題提供支援混合區域字集部署或 UTF-8(8 位元 Unicode 轉換格式)多國語言資料庫的準則。
如果您的工作環境中,有不同區域字集的不同電腦連接到相同的 Rational® ClearQuest® 資料庫集,或是您已選取 ClearQuest UTF-8 資料字碼頁 (65001) 用於資料庫集,您必須考量下列字元表示法問題:

配置區域字集

區域字集是指可在用戶端作業系統的指令行 Shell 中輸入或顯示的字集。在 UNIX 系統,區域字集是由 LANG 環境變數所控制。在 Windows,這是由「地區及語言選項」中的設定值所控制。

在 7.0 之前的 Rational ClearQuest 版本中,除非區域字集符合 ClearQuest 資料字碼頁,否則不允許寫入作業。如果設定不符,則只接受唯讀作業。唯讀模式是必要的,因為 ClearQuest 應用程式將資料寫入資料庫時是使用用戶端或 Web 伺服器的區域字集,而非資料庫集的 ClearQuest 資料字碼頁。

從 7.0 版開始,Rational ClearQuest 軟體是以 Unicode 來處理資料,而且它的應用程式使用 ClearQuest 資料字碼頁來寫入其資料庫。這些應用程式可以在讀寫模式下連接至 ClearQuest 資料庫,即使區域字集不符合 ClearQuest 資料字碼頁也一樣。

選取及設定資料庫集的 ClearQuest 資料字碼頁

Oracle 將供應商資料庫字集稱為字集charset;IBM DB2 將之稱為字碼頁字碼集;而 SQL Server 則稱為字碼頁對照 (collation)

選取及設定資料庫的供應商資料庫字集

Rational ClearQuest 7.1.1 版開始,您可以選取 UTF-8 ClearQuest 資料字碼頁用於 Oracle 和 DB2 資料庫集。UTF-8 資料字碼頁允許使用者資料庫中有多國語言字元儲存體。選取 UTF-8 作為資料字碼頁時,您會在混合區域字集部署中工作,除非作業系統的區域字碼頁也是 UTF-8。後者並非 Windows 系統的選項。

編寫連結鉤程式碼和 Script,以處理區域字集可能不包括的 ClearQuest 資料字碼頁中的字元

針對混合的區域字集部署或 UTF-8 多種語言資料庫環境撰寫的 Script 和連結鉤,必須處理區域字集可能不包括的 ClearQuest 字元資料。必須編寫那些 Script 和連結鉤來支援 Unicode,以便在這些環境中充分利用此功能。

設計工具包含新設定:Unicode Aware。為 7.0 版撰寫的連結鉤可指定從 ClearQuest API 呼叫傳回的字串中的字元是否只能在區域字集中(RETURN_STRING_LOCAL),或可以是任何 Unicode 字元 (RETURN_STRING_UNICODE)。此外,有新的 API 功能可用來控制傳回字串模式。在 RETURN_STRING_LOCAL 模式中,如果傳回字串包括無法在區域字集中表示的字元,則 API 呼叫會傳回異常。在 RETURN_STRING_UNICODE 中,API 呼叫會正確傳回所有字元。

為了確保連結鉤和 Script 能夠處理混合區域字集或 UTF-8 部署中的所有資料,您必須將此模式設為 RETURN_STRING_UNICODE,並適當處理可能傳回的 Unicode 字元。將傳回字串模式設為 RETURN_STRING_UNICODE 還不夠;您必須驗證程式碼是否可以正確處理 Unicode 字元。下列準則雖然很有幫助,但最後您還是必須使用適當的 Unicode 程式設計技術來撰寫 Script 語言。

如果您要升級至 7.0 版,且環境中所有區域字集都符合 ClearQuest 資料字碼頁(這在舊版中很常見),則這些變更對現有的綱目沒有影響。預設模式是 RETURN_STRING_LOCAL,容許連結鉤和 Script 繼續運作。

如果您要將 7.0 版部署到區域字集不符合 ClearQuest 資料字碼頁的環境中,您必須確保 Script 可以處理 ClearQuest 軟體的 Unicode 字元資料,並將 Script 的傳回模式設為 RETURN_STRING_UNICODE,然後將套件升級至 7.0 版。如需支援 Unicode 的ClearQuest 套件的清單,請參閱表 1。不處理 Unicode 的 Script 可以執行,但如果系統試圖傳回任何不包含在區域字集中的字元資料給 Script,則會傳回錯誤。只要這些 Script 處理的資料受限於用戶端或 Web 伺服器的區域字集,它們就可以繼續運作。

表 1. 套件傳回字串模式
套件 傳回字串模式
AMWorkActivitySchedule RETURN_STRING_UNICODE
ATStateTypes RETURN_STRING_UNICODE
附件 RETURN_STRING_UNICODE
AuditTrail RETURN_STRING_UNICODE
BTStateTypes RETURN_STRING_UNICODE
BuildTracking RETURN_STRING_UNICODE
CQTM RETURN_STRING_UNICODE
客戶 RETURN_STRING_UNICODE
DeploymentTracking RETURN_STRING_UNICODE
DTStateTypes RETURN_STRING_UNICODE
電子郵件 RETURN_STRING_UNICODE
EnhancementRequest RETURN_STRING_UNICODE
eSignature RETURN_STRING_UNICODE
歷程 RETURN_STRING_UNICODE
附註 RETURN_STRING_UNICODE
專案 RETURN_STRING_UNICODE
解決方案 RETURN_STRING_UNICODE
TPM RETURN_STRING_UNICODE
在開發必須處理混合字集部署的應用程式時,您必須處理幾種考量。
  • 傳回字串模式

    ClearQuest 軟體會以 Unicode 字元來處理所有資料。不過,綱目連結鉤(Perl 和 Visual Basic)和其他 ClearQuest API 應用程式或整合可能未編寫成處理 Unicode 字元。在 7.0 版,傳回字串模式可用來處理此問題。連結鉤程式碼可在設計工具 Script 編輯器中設定為 Unicode Aware,以指出 Script 是在 RETURN_STRING_UNICODE 傳回字串模式中執行。(若要這麼做,請選取 Unicode Aware 勾選框)。Script 可呼叫 SetPerlReturnStringModeSetBasicReturnStringMode 方法,將傳回字串模式設定為 RETURN_STRING_UNICODE

    當字串是由適用於 Perl 或 COM 的 ClearQuest API 傳回時,傳回字串模式會限制 (RETURN_STRING_LOCAL) 或容許完整 (RETURN_STRING_UNICODE) 字元表示法。

  • 現有連結鉤或 Script 程式碼中的 Unicode 支援

    撰寫可處理 Unicode 字元的連結鉤和 Script 是不錯的做法。RETURN_STRING_LOCAL 是提供作為預設傳回字串模式,因此舊版 ClearQuest 軟體的現有連結鉤和 Script 不需要變更就可以執行。即使您目前沒有 Unicode 方面的需求,經過一段時間以後,您應該修改現有的連結鉤和 Script,使其在 RETURN_STRING_UNICODE 模式中運作。

    請驗證連結鉤或 Script 程式碼能否處理任何 Unicode 字元。然後在設計工具 Script 編輯器中,將連結鉤程式碼標示為 Unicode Aware,或讓外部 Script 呼叫 SetPerlReturnStringModeSetBasicReturnStringMode 方法。然後,就可以在任何 ClearQuest 環境中使用連結鉤或 Script。例如:
    1. 使用 Perl 的 ClearQuest API Script 是在 Windows Latin 1 (1252) 區域字集系統上執行,它所連接的 ClearQuest 資料庫的資料字碼頁是設定為 Shift-JIS (932)。
    2. 這個 Script 會擷取包含日文的欄位值。依預設,此值會以執行 Perl Script 之電腦的區域字集傳回(在本例中為 1252)。因為 Shift-JIS (932) 日文字元無法以 Latin 1 字碼頁的字元表示,所以會產生異常。若要處理此字元,應用程式必須能夠處理 Unicode 字元,並將傳回字串模式設定為 RETURN_STRING_UNICODE;如此一來,不會產生異常,且 Script 會以 Unicode 字元擷取欄位值中的所有字元。

    依預設,當 ClearQuest API Script 傳回的字串包含區域字集以外的字元時,步驟 2 會產生異常。異常會防止資料毀損。在您檢閱及確認程式碼可處理 Unicode 字元之後,您可以使用 ClearQuest API 或在設計工具的 Script 編輯器中設定 RETURN_STRING_UNICODE 傳回字串模式。在步驟 2 做此變更之後,適用於 Perl 的 ClearQuest API 會以 UTF8 (UNICODE) 傳回欄位值字串(如果此字串包含非區域字集資料的話),適用於 VBScript、Visual Basic 或 COM 的 ClearQuest API 會傳回未限定的 Unicode 字元。無法以區域字集表示的字元可傳回至連結鉤或 Script,改以 Unicode 字元處理。

    如果連結鉤和 Script 是以其 Script 語言(Perl、VBScrip、Visual Basic 或 COM)執行作業,而該語言並不支援處理無法以區域字集表示的字元,則它們必須使用 RETURN_STRING_LOCAL。例如:
    • 在不使用 Perl UTF8 字串的 Perl 呼叫(例如某些系統呼叫)中使用 ClearQuest 資料
    • 使用 ClearQuest 資料作為檔案或目錄名稱(檔案和目錄名稱必須在區域字集中)
    • ClearQuest 資料寫入檔案中,而不配置輸出檔來支援 Unicode 字元
    • ClearQuest 資料傳送至只接受區域字集資料的整合中

    RETURN_STRING_LOCAL 模式中,可執行諸如執行查詢之類的作業,且查詢結果集可包含 Unicode 字元。唯有從 Rational ClearQuest API 方法的結果集擷取資料,且 API 呼叫傳回的字元不在區域字集中,才會產生異常。例如,如果傳回至整合的資料只包含區域字集字元,則整合或外部應用程式可對變更要求進行操作。當傳回的字元不在區域字集中時,整合程式碼必須處理 Rational ClearQuest API 方法產生的異常。如果整合 API 是配置為 RETURN_STRING_UNICODE,則不會產生異常,但應用程式必須正確處理所傳回的任何 Unicode 字元。在 RETURN_STRING_LOCALRETURN_STRING_UNICODE 模式中,如果應用程式寫入的字元無法以 ClearQuest 資料字碼頁表示,則異常狀況也會傳回至呼叫端整合或應用程式。

    如需相關資訊,請參閱「IBM Rational ClearQuest API 參考手冊」說明中的設定連結鉤和 Script 的傳回字串模式

  • 套件和綱目中的 Unicode 支援

    部分套件或綱目並未設計為處理 Unicode 及非區域字集資料。每一個套件中的每一個 Script 所提供的支援會在設計工具 Script 編輯器中指示(已選取 Unicode Aware 勾選框)。DefectTracking 和「共用」綱目支援 Unicode。不過,若有綱目包括的套件不支援 Unicode 字元,則混合字集部署中無法使用此綱目。請參閱表 1

    您可以編輯或新增連結鉤來存取套件欄位,這些連結鉤被視為套件的一部分。那些連結鉤繼承套件的預設 Unicode 支援,但設計工具不顯示連結鉤的這個正確設定。

如果連接到資料庫集或群體的所有用戶端的區域字集符合資料字碼頁,則您不需要考量這些問題。如需字元表示法和字碼頁設定的相關資訊,請參閱「管理 Rational ClearQuest」線上說明。


意見