リリース情報


40.1 入門

ユニコード標準は、書かれた文字とテキストのための汎用文字エンコード・スキームです。 ユニコードは文字のマルチバイト表現です。 テキスト・データの国際的な交換と、グローバル・ソフトウェアの基礎の作成を可能にする エンコード・マルチリンガル・テキストの一貫性のある方法を定義します。

ユニコードでは次の 2 つのエンコード・スキームが利用できます。デフォルトの エンコード・スキームは UTF-16 で、これは 16 ビットのエンコード・スキームです。 UCS-2 は UTF-16 のサブセットで、これは文字を表すために 2 バイトを使用します。 UCS-2 は一般に、既存のすべての 1 バイトおよび 2 バイト・コード・ページから すべての必要な文字を表現可能な汎用コード・ページとして受け入れられています。 UCS-2 は、IBM ではコード・ページ 1200 として登録されています。

他のユニコード・エンコード形式には 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 ユニコード・データベースおよびアプリケーション

UTF-8 コード・セットで作成された DB2 ユニバーサル・データベース Unix 版、 Windows 版、および OS/2 版は、UCS-2 と UTF-8 の両方でデータを保管するために 使用できます。このようなデータベースは、ユニコード・データベースと呼ばれます。 SQL CHAR データは UTF-8 を使用してエンコードされ、SQL GRAPHIC は UCS-2 を 使用してエンコードされます。これは、1 バイト (SBCS) および マルチバイト (DBCS) コード・セットを CHAR 列に、 2 バイト (DBCS) コード・セットを GRAPHIC 列に保管するのと同じです。

アプリケーションのコード・ページは、DB2 がデータの保管に使用する コード・ページに一致しない場合があります。非ユニコード・データベースでは、 コード・ページが同じでない場合、データベース・マネージャーがクライアントと サーバーの間で転送される文字および漢字 (純粋な DBCS) データを変換します。 ユニコード・データベースでは、クライアント・コード・ページと UTF-8 間の データの変換はデータベース・マネージャーによって自動的に実行されますが、 漢字 (UCS-2) データはクライアントとサーバーの間で変換されずに渡されます。

図 7. データベース・マネージャーによって実行されるコード・ページ変換


データベース・マネージャーによって実行されるコード・ページ変換

注:

  1. ユニコード・データベースに接続するとき、アプリケーションが DB2CODEPAGE=1208 を 設定する場合、ローカル・コード・ページは UTF-8 なので、コード・ページ変換が必要になります。

  2. ユニコード・データベースに接続するとき、CLI アプリケーションは文字データを 漢字データとして、漢字データを文字データとして受け取ります。

UTF-8 コード・ページをアプリケーションが指定するのは可能であり、この場合、 漢字データはすべて UCS-2 で、文字データは UTF-8 で送受信されます。この アプリケーション・コード・ページはユニコード・データベースでのみサポートされます。

ユニコード使用時のその他の考慮事項には以下があります。

  1. データベース・コード・ページはデータベースの作成時に決定され、デフォルトでは この値はオペレーティング・システム・ロケール (またはコード・ページ) から 決定されます。明示的にユニコード DB2 データベースを作成するには、 CODESET および TERRITORY キーワードを使用できます。たとえば:
    CREATE DATABASE unidb USING CODESET UTF-8 TERRITORY US
    
  2. アプリケーション・コード・ページはまたローカル・コード・ページにデフォルト設定 されますが、これは次の 2 つの方法で UTF-8 にオーバーライドされます。

    
    
  3. GRAPHIC 列のデータは各ユニコード文字につきちょうど 2 バイトですが、 CHAR 列のデータはユニコード文字につき 1 バイトから 3 バイトを使用します。 GRAPHIC 列の文字に関する SQL 制限は一般に CHAR 列の半分ですが、バイト数に関しては 同じです。CHAR の最大文字長は 254 です。漢字の列の最大文字長は 127 です。 詳しくは、SQL 解説書 の「関数」の章の MAX を 参照してください。
    
    
  4. グラフィック・リテラルは G 接頭部で文字リテラルと区別されます。 たとえば:
    SELECT * FROM mytable WHERE mychar = 'utf-8 data' AND mygraphic = G'ucs-2 data'
    

    注:
    G 接頭部はユニコード・データベースには不要です。
    詳細および更新されたサポートについては、 "ユニコード・データベースのリテラル" を参照してください。
    
    
  5. CLI/ODBC および JDBC アプリケーションのサポートは、組み込みアプリケーションの サポートとは異なります。CLI/ODBC サポートに関する情報については、 40.3, "CLI の手引きおよび解説書" を参照してください。
    
    
  6. UCS-2 のバイト順序は、プラットフォーム間で異なる場合があります。 内部的に DB2 はビッグ・エンディアン形式を使用します。

40.1.2 資料の更新

この資料は、DB2 バージョン 7.1 でユニコードを使用するさいの以下の情報を 更新します。

DB2 でのユニコードの使用法については管理の手引き、 付録 J 各国語サポート (NLS): "DB2 UDB でのユニコード/UCS-2 および UTF-8 サポート" を参照してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]