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 文字を除き、同じ基本コード・ポイントを使用して文字を表します。
文字名 (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で指定されている文字名に準拠しています。
シフト 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 データベースにデータを挿入する場合、同じ文字が異なるコード・ポイントとしてデータベースに保管される可能性があります。