CCSID 943 の代替 Unicode 変換表

日本語コード・ページには、いくつかの IBM® コード化文字セット ID (CCSID) があります。 CCSID 943 は、Microsoft Windows Shift-JIS コード・ページとして登録されています。 文字を CCSID 943 と Unicode の間で変換するとき、以下の 2 つの問題が発生する場合があります。 この問題は、 IBM コード・ページ変換表と Microsoft コード・ページ変換表の間の相違が原因で発生します。

問題 1:

これまでの経緯から、CCSID 943 コード・ページでは 300 を超える文字が、それぞれ 2 つまたは 3 つのコード・ポイントで表されます。 IME (input method editors) とコード・ページ変換表を使用すると、これらの同等のコード・ポイントのうち 1 つのみ入力されます。 例えば、ローマ数字 1 の小文字 (i) には X'EEEF' と X'FA40' の 2 つの同等のコード・ポイントがあります。 Microsoft Windows IME は、 i が入力されると常に X'FA40' を生成します。 一般に、 IBM と Microsoft は、以下の 13 文字を除き、同じ基本コード・ポイントを使用して文字を表します。

表 1. CCSID 943 シフト JIS コード・ポイント変換
文字名 (Unicode コード・ポイント) IBM 1 次 Shift-JIS コード・ポイント Microsoft Shift-JIS 基本コード・ポイント
ローマ数字の 1 (U+2160) X'FA4A' X'8754'
ローマ数字の 2 (U+2161) X'FA4B' X'8755'
ローマ数字の 3 (U+2162) X'FA4C' X'8756'
ローマ数字の 4 (U+2163) X'FA4D' X'8757'
ローマ数字の 5 (U+2164) X'FA4E' X'8758'
ローマ数字の 6 (U+2165) X'FA4F' X'8759'
ローマ数字の 7 (U+2166) X'FA50' X'875A'
ローマ数字の 8 (U+2167) X'FA51' X'875B'
ローマ数字の 9 (U+2168) X'FA52' X'875C'
ローマ数字の 10 (U+2169) X'FA53' X'875D'
括弧で囲まれた漢字の (株) (U+3231) X'FA58' X'878A'
ナンバー記号 (U+2116) X'FA59' X'8782'
電話の記号 (U+2121) X'FA5A' X'8784'

Db2® データベース・マネージャーなどの IBM 製品は、主に IBM 大文字のローマ数字 「I」を表すために X'FA4A'などのコード・ポイントを使用しますが、Microsoft 製品は同じ文字を表すために X'8754' を使用します。 Microsoft ODBC アプリケーションは、CCSID 943 の Db2 データベースに I 文字を X'8754 'として挿入でき、 IBM Data Studio は X'FA4A' と同じ文字を同じ CCSID 943 データベースに挿入できます。 ただし、Microsoft ODBC アプリケーションは、X'8754 'としてエンコードされた I を持つ行のみを検出でき、 IBM Data Studio は、X'FA4A' としてエンコードされた I を持つ行のみを検出できます。 IBM Data Studio で I を X'8754 ' として選択できるようにするには、Unicode から CCSID 943 へのデフォルトの IBM 変換表を、 Db2 データベース・マネージャーによって提供される代替 Microsoft 変換表に置き換える必要があります。

問題 2:

以下の文字リストは、CCSID 943 から Unicode に変換されるときに、 IBM 変換表と Microsoft 変換表のどちらが使用されるかによって、異なるコード・ポイントになります。 これらの文字については、 IBM 変換表は、日本工業規格 JISX0208、 JISX0212、および JISX0221で指定されている文字名に準拠しています。

表 2. CCSID 943 から Unicode へのコード・ポイント変換
シフト JIS コード・ポイント (文字名) IBM 1 次コード・ポイント (Unicode 名) Microsoft 基本コード・ポイント (Unicode 名)
X'815C' (全角ダッシュ) U+2014 (全角ダッシュ) U+2015 (横線)
X'8160' (波形ダッシュ) U+301C (波形ダッシュ) U+FF5E (全角の波形記号)
X'8161' (二重縦線) U+2016 (二重縦線) U+2225 (並行標)
X'817C' (負符号) U+2212 (負符号) U+FF0D (全角のハイフン/負符号)
X'FA55' (破線) U+00A6 (破線) U+FFE4 (全角の破線)

例えば、CCSID 943 コード・ポイント X'815C' の文字 EM ダッシュは、 IBM 変換表の使用時には Unicode コード・ポイント U+2014 に変換されますが、Microsoft 変換表の使用時には U+2015 に変換されます。 これにより、Microsoft ODBC アプリケーションでは U+2014 が無効なコード・ポイントとして扱われるため、潜在的な問題が発生する可能性があります。 このような潜在的な問題を回避するには、CCSID 943 から Unicode へのデフォルトの IBM 変換表を、 Db2 データベース・マネージャーによって提供される代替の Microsoft 変換表に置き換える必要があります。

CCSID 943 と Unicode の間の代替 Microsoft 変換表の使用は、 Db2 クライアントと、CCSID 943 を実行し、すべてが同じ代替 Microsoft 変換表を使用している Db2 データベースの、クローズされた環境に制限する必要があります。 デフォルトの IBM 変換表を使用する Db2 クライアントと、代替の Microsoft 変換表を使用する別のクライアントがあり、両方のクライアントが CCSID 943 の同じ Db2 データベースにデータを挿入する場合、同じ文字が異なるコード・ポイントとしてデータベースに保管される可能性があります。