版次注意事項


|40.1 簡介

|Unicode 標準是書寫字元及文字方面全球通用的字元編碼方法。 Unicode 是用多個位元組來表示一個字元。 |它定義了一種一致的方式來將多國語言文字編碼, |使得文字資料可在國際間交換,並創立世界級軟體的基礎。

|Unicode 提供以下兩種編碼方法。預設的編碼方法是 UTF-16 (16 位元的編碼格式)。UCS-2 是 UTF-16 的子集, |它使用兩個位元組來表示一個字元。UCS-2 通常被認可為全球性的字碼頁, |它能夠表示目前所有單位元組字碼頁及雙位元組字碼頁的全部必需字元。UCS-2 在 IBM 中註冊為字碼頁 1200。

|另一個 Unicode 編碼格式是 UTF-8,它是位元組導向的, |且是被設計來方便現有 ASCII 系統的使用。UTF-8 使用不定數目的位元組 (通常為 1-3,有時是 4) 來儲存每個字元。 |無變化的 ASCII 字元就儲存為單位元組。所有其它字元就使用多個位元組來儲存。通常 UTF-8 資料可依據非設計為多位元組字碼頁的字碼來視為擴充的 ASCII 資料。 |UTF-8 在 IBM 中註冊為字碼頁 1208。

|應用程式要考慮到資料在區域字碼頁、UCS-2 和 UTF-8 之間做轉換時的需求, |這是很重要的。例如,20 個字元在 UCS-2 中需要完整的 40 個位元組, |UTF-8 則介於 20 到 60 個位元組之間 (視原先使用的字碼頁及文字而定)。

|40.1.1 DB2 Unicode 資料庫及應用程式

| |

|使用 UTF-8 字碼集建立的 Unix、Windows 或 OS/2 DB2 Universal 資料庫 |可用來儲存 UCS-2 及 UTF-8 兩種格式的資料。 這樣的資料庫可被視為 Unicode 資料庫。 SQL CHAR 資料是使用 UTF-8 來編碼的,而 SQL GRAPHIC 資料是使用 UCS-2 來編碼的。 這可以相當於在 CHAR 直欄儲存單位元組 (SBCS) 及多位元組 (MBCS) 字碼集, |以及在 GRAPHIC 直欄儲存雙位元組 (DBCS) 字碼集。

|應用程式的字碼頁可能和 DB2 用來儲存資料的字碼頁不一樣。 在非 Unicode 資料庫中,在字碼頁不一樣時, |資料庫管理程式會轉換從屬站及伺服器之間傳送的字元及圖形 (pure DBCS) 資料。 在 Unicode 資料庫中,從屬站字碼頁與 UTF-8 之間的字元資料轉換會自動由資料庫管理程式來執行, |但是所有的圖形 (UCS-2) 資料不經過轉換就在從屬站及伺服器之間傳送。

|圖 7. 資料庫管理程式所執行的字碼頁轉換

|資料庫管理程式所執行的字碼頁轉換

|註:

  1. |當連接到 Unicode 資料庫,如果應用程式設定 DB2CODEPAGE=1208|則區域字碼頁是 UTF-8,所以不需要做字碼頁轉換。

  2. |當已連接到 Unicode 資料庫,CLI 應用程式也可將字元資料當作圖形資料接收, |以及將圖形資料當作字元資料。 |

|應用程式是可以指定 UTF-8 字碼頁,以指出它將用 UCS-2 來傳送及接收圖形資料, |並用 UTF-8 來傳送及接收字元資料。 此應用程式字碼頁只支援 Unicode 資料庫。

|使用 Unicode 時要考慮的其它項目為: |

  1. |資料庫字碼頁是在建立資料庫的時候決定的, |且它的值預設會從作業系統語言環境 (或字碼頁) 來決定。 CODESET 及 TERRITORY 關鍵字可用來明確地建立 Unicode DB2 資料庫。 例如:
    |CREATE DATABASE unidb USING CODESET UTF-8 TERRITORY US
  2. |應用程式字碼頁也預設為區域字碼頁,但是這可用下列方法由 UTF-8 來置換: |

    |
  3. |GRAPHIC 直欄中的資料對於每個 Unicode 字元會使用完整的兩個位元組, |而 CHAR 直欄中的資料對於每個 Unicode 字元會使用 1 到 3 個位元組。 在 GRAPHIC 直欄字元方面的 SQL 限制通常是 CHAR 直欄字元的一半, |但在位元組方面是一樣的。 CHAR 直欄的最大字元長度是 254。 GRAPHIC 直欄的最大字元長度是 127。 若需詳細資訊,請參閱 SQL Reference "Functions" 章節中的 MAX
    |
  4. |圖形文字用 G 字首來與字元文字區別。 |例如:
    |SELECT * FROM mytable WHERE mychar = 'utf-8 data' AND mygraphic = G'ucs-2 data'

    |

    |註:
    對於 Unicode 資料庫就不需要 G 字首。 |
    |請參閱"Literals in Unicode Databases",取得其餘資訊及更新的支援。
    |
  5. |支援 CLI/ODBC 和 JDBC 應用程式不同於支援內含的應用程式。 若需 CLI/ODBC 支援的相關資訊,請參閱40.3, "CLI Guide and Reference(無中文版)"
    |
  6. |UCS-2 資料的位元組次序可能因平台而異。 DB2 在內部是使用 big-endian 格式。 |

|40.1.2 文件更新

|

|此文件更新下列有關在 DB2 版本 7.1 中使用 Unicode 的資訊: |

|若需有關在 DB2 中使用 Unicode 的詳細資訊,請參照 Administration Guide 的 Appendix J. National Language Support (NLS): "Unicode/UCS-2 and UTF-8 Support in DB2 UDB"。


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]