リリース情報


47.1 入門

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

ユニコードには 2 つのエンコード・スキーム、UTF-16 および UTF-8 が備えられています。

デフォルトのエンコード・スキームは 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 バイトを必要とします。

47.1.1 DB2 ユニコード・データベースおよびアプリケーション

UTF-8 のコード・セットを指定して作成された DB2 ユニバーサル・データベース Unix 版、Windows 版、および OS/2 版を使用すれば、UCS-2 と UTF-8 の両方のフォーマットのデータを保管できます。このようなデータベースは、ユニコード・データベースと呼ばれます。 SQL 文字データは UTF-8 を使用してエンコードされ、SQL 漢字データは UCS-2 を使用してエンコードされます。つまり、MBCS 文字は、単一バイト文字および 2 バイト文字の両方を含めて文字列に保管され、DBCS 文字は、漢字の列に保管されます。

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

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

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

注:

  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. GRAPHIC リテラルは G 接頭部を使用して、文字リテラルと区別されます。例えば、以下のようになります。
    SELECT * FROM mytable WHERE mychar = 'utf-8 data' 
                                            AND mygraphic = G'ucs-2 data'
    

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

47.1.2 資料の更新

これらのリリース情報には、DB2 バージョン 7.1 でユニコードを使用する際の次の情報に対する更新が含まれています。

DB2 でのユニコードの使用法については、「管理の手引き」の各国語サポート (NLS) の付録『DB2 UDB でのユニコード・サポート』を参照してください。


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