ユニコード標準は、書かれた文字とテキストのための汎用文字エンコード・スキームです。 ユニコードは文字のマルチバイト表現です。 テキスト・データの国際的な交換と、グローバル・ソフトウェアの基礎の作成を可能にする エンコード・マルチリンガル・テキストの一貫性のある方法を定義します。
ユニコードでは次の 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 バイトを必要とします。
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. データベース・マネージャーによって実行されるコード・ページ変換
![]() |
注:
UTF-8 コード・ページをアプリケーションが指定するのは可能であり、この場合、 漢字データはすべて UCS-2 で、文字データは UTF-8 で送受信されます。この アプリケーション・コード・ページはユニコード・データベースでのみサポートされます。
ユニコード使用時のその他の考慮事項には以下があります。
CREATE DATABASE unidb USING CODESET UTF-8 TERRITORY US
db2set DB2CODEPAGE=1208
SELECT * FROM mytable WHERE mychar = 'utf-8 data' AND mygraphic = G'ucs-2 data'
この資料は、DB2 バージョン 7.1 でユニコードを使用するさいの以下の情報を 更新します。
第 3 章 言語エレメント
第 4 章 関数
第 3 章 拡張フィーチャー
付録 C DB2 CLI および ODBC
DB2 でのユニコードの使用法については管理の手引き、 付録 J 各国語サポート (NLS): "DB2 UDB でのユニコード/UCS-2 および UTF-8 サポート" を参照してください。