C および C++ 組み込み SQL アプリケーションにおける日本語または中国語 (繁体字) EUC、および UCS-2 に関する考慮事項

アプリケーション・コード・ページが日本語または中国語 (繁体字) EUC の場合、またはアプリケーションが UCS-2 データベースに接続している場合は、 wchar_t または sqldbchar グラフィック・ホスト変数または入出力 SQLDA を指定した CONVERT オプションまたは NOCONVERT オプションを使用して、データベース・サーバーの GRAPHIC 列にアクセスできます。
このセクションで DBCS 形式 に言及する場合、それは EUC データ用の UCS-2 コード化スキームを指します。 以下にリストするケースを検討してください。
  • CONVERT オプションを使用する場合

    Db2® クライアントは、入力 SQLDA をデータベース・サーバーに送信する前に、グラフィック・データをワイド・キャラクター形式からアプリケーション・コード・ページに変換し、次に UCS-2 に変換します。 グラフィック・データはすべて、UCS-2 コード・ページ ID によってタグ付けされたデータベース・サーバーに送られます。 混合文字データは、アプリケーション・コード・ページ ID によってタグ付けされます。 クライアントによってデータベースからグラフィック・データが取り出されると、 そのグラフィック・データは UCS-2 コード・ページ ID によってタグ付けされます。 Db2 クライアントが、 データを UCS-2 からクライアント・アプリケーション・コード・ページへ変換し、 さらにそれをワイド・キャラクター形式に変換します。 ホスト変数の代わりに入力 SQLDA を使用した場合は、 グラフィック・データを必ずワイド・キャラクター形式でエンコードする必要があります。 このデータは UCS-2 に変換され、 その後データベース・サーバーに送られます。 上記の変換はパフォーマンスに影響を及ぼします。

  • NOCONVERT オプションを使用する場合

    グラフィック・データは UCS-2 によってエンコードされ、 UCS-2 コード・ページでタグ付けされたものと Db2 からは見なされます。 変換は行われません。 Db2 は、グラフィック・ホスト変数をバケットとして使用されるものと見なします。 NOCONVERT オプションを選択した場合、 データベース・サーバーから取り出されるグラフィック・データは、 UCS-2 によってエンコードされたアプリケーションに渡されます。 アプリケーション・コード・ページから UCS-2、 および UCS-2 からアプリケーション・コード・ページへの変換は、 すべてユーザーの責任で行うことになります。 UCS-2 としてタグ付けされたデータは、 変換や置換なしでデータベース・サーバーに送られます。

変換を最小限に抑えるには、 NOCONVERT オプションを使用してアプリケーション内で変換を処理するか、 または GRAPHIC 列を使用しないかのいずれかです。 wchar_t エンコード方式が 2 バイトの Unicode であるクライアント環境 (例えば、Windows 2000 または AIX® バージョン 5.1 以上) の場合、NOCONVERT オプションを使用して UCS-2を直接操作できます。 この場合、ご使用のアプリケーションで、ビッグ・エンディアン・アーキテクチャーとリトル・エンディアン・アーキテクチャーの違いを処理することができます。 NOCONVERT オプションを指定すると、 Db2 データベース・システムは、常に 2 バイトのビッグ・エンディアンである sqldbcharを使用します。

UCS-2 への変換後 (NOCONVERT が指定されている場合)、またはワイド文字フォーマットへの変換によって、 IBM® eucJP/IBM eucTW CS0 (7 ビット ASCII) および IBM eucJP CS2 (カタカナ) データをグラフィック・ホスト変数に割り当てないでください。 これは、どちらの EUC コード・セットの文字も UCS-2 から PC DBCS へと変換すると 1 バイト文字になってしまうためです。

通常、eucJP および eucTW は GRAPHIC データを UCS-2 として保管しますが、 これらのデータベースにある GRAPHIC データは非 ASCII eucJP または eucTW データのままです。 特に、そのような GRAPHIC データに埋め込まれるスペースは、DBCS スペースです (UCS-2、U+3000 では表意文字スペースとも呼ばれます)。 しかし、UCS-2 データベースの場合には、 GRAPHIC データに UCS-2 文字を含めることができ、 スペースの埋め込みは UCS-2 スペース、U+0020 を使用して実行されます。 アプリケーションのコーディングでは、UCS-2 データベースから UCS-2 データを検索する場合と、eucJP および eucTW データベースから UCS-2 データを検索する場合の違いに注意してください。