IBMコードページ949(IBM-949)は、IBMがコンピュータ上で韓国語テキストを表現するために使用してきた文字コードです。これは可変長のコードであり、韓国標準KS X 1001で定義された万星コードの文字をEUC-KRと互換性のある形式で表現しますが、追加の漢字、追加の合成済みハングル音節、およびユーザー定義文字のためのIBM拡張機能が追加されています。
16進数で値を指定すると、バイト0x00から0x7Fは、シングルバイトのKS X 1003(ISO 646 :KR)文字に使用されます。これはASCIIに似た文字セットですが、バックスラッシュの代わりにワン記号を使用します。バイト0x80から0x84は、IBMシングルバイト拡張文字に使用されます。先頭バイト0x8Fから0xA0は、IBMダブルバイト拡張文字に使用されます。先頭バイト0xA1から0xFEは、Wansungコード( EUC-KR形式のKS X 1001文字、ダブルバイト)に使用されますが、ユーザー定義用に未使用の領域がいくつか解放されています。
両方とも「cp949」と呼ばれることがありますが、IBM-949 は、Microsoft の統合ハングルコードであるWindows コード ページ 949 (IBM-1363) とは異なり、EUC-KR の別の拡張です。また、IBM のプレーン EUC-KR ( IBM-970 ) の実装とも混同しないでください。OS /2のコード ページ 949は IBM コード ページですが、これを変更するためのサードパーティのパッチが存在します。[ 1 ]
IBM-949 とUnified Hangul Code (Windows-949) はどちらも「コード ページ 949」(または「cp949」)として知られていますが、共通しているのは EUC-KR サブセットのみです。どちらにも、識別するための標準化されたIANA登録ラベルはありません。UHC はWHATWGエンコーディング標準[ 2 ]に「windows-949」などのラベルとともに含まれていますが[ 3 ] 、 IBM-949 は含まれていません。したがって、IBM-949 はHTML5では許可されていません。
ラベル「ibm-949」(および逆に「windows-949」および「ms949」)の意味は、これらのラベルがサポートされている場合は明確ですが、エンコーディングラベル「949」および「cp949」の解釈は、実装によって異なります。たとえば、International Components for Unicodeでは、IBM-949 を参照するために「cp949」、「949」、「ibm-949」、「x-IBM949」を使用し、[ 4 ]さらに、ラベル「cp949c」、「ibm-949c」、「x-IBM949C」を使用して、0x20–7E に対して変更されていないASCIIマッピングを使用するバリアントを参照します(バックスラッシュのマッピングが重複します)、[ 5 ]一方、(コード ページ番号 949 を含むラベルのうち) UHC に割り当てられるのは「ms949」と「windows-949」のみです。[ 6 ]これは、 UHCのラベルとして「cp949」と「949」の両方(より明示的な「ms949」と「uhc」に加えて、「windows-949」は除く)を認識し、IBM-949 コーデックを含まない Python とは対照的です。[ 7 ] OS/2の韓国語版で使用されるコード ページ 949は IBM コード ページです。韓国語の音節の Unicode セット全体をサポートするには、それを Microsoft コード ページに置き換えるサードパーティ パッチが存在します。[ 1 ]
IBM-949 は、 2 つの固定幅コード ページ、すなわち 1 バイトのコード ページ 1088と 2 バイトのコード ページ 951の組み合わせとして定義される可変幅エンコーディングです。[ 8 ] [ 9 ] [ 10 ]
IBM-949 の 2 バイト コンポーネントであるコード ページ 951 (DBCS-PC、つまり 2 バイト非EUC非EBCDICコード) のバージョンは、コード ページ 933 の 2 バイト コンポーネントであるコード ページ 834 (DBCS-Host、つまり 2 バイト EBCDIC コード) とともに、1992 年 9 月に改訂された IBM コーポレート仕様 CH 3-3220-125 で定義されています。[ 11 ]このバージョンのコード ページ 949/951 では、先頭バイト範囲 0x8F–A0 全体をユーザー定義領域とみなし、標準の Wansung 割り当てとユーザー定義領域のみが含まれていたため、コード ページ 933/834 に含まれる一部の文字は含まれていませんでした。[ 11 ] International Components for Unicode (ICU)によって実装された後のバージョンでは、これらの文字を拡張として含めるためにユーザー定義領域が縮小されています。[ 12 ]
1989 年 10 月の CH 3-3220-125 の以前の改訂では、代わりにコード ページ 926 を DBCS-PC コードとして定義していました。これは IBM-834 と同じ文字を、IBM-951 および IBM-834 とは異なるレイアウトでエンコードしており、先頭バイト範囲が異なり、EUC-KR 拡張ではありませんでした。[ 11 ] IBM-926 は、コード ページ 891またはコード ページ 1040 (それぞれ 8 ビットN バイト ハングル コードとその拡張。Shift JIS が8 ビットJIS X 0201をどのように拡張するかと比較してください) と組み合わされて、それぞれ IBM-934 または IBM-944 を形成しました。[ 13 ] [ 14 ]
コード ページ 944/926 は現在、 IBM-949 に置き換えられ、非推奨となっています。1992 年の改訂では、コード ページ 926 は「制限付き」(「登録されている特定の環境に限定される」)と指定されており、チャートや他のコード ページからのマッピングは提供されていません。[ 11 ]また、CCSID 944 は「共存と移行」に分類されています。 [ 14 ] (CCSID 949 の「相互運用可能」とは対照的です)。[ 8 ] International Components for Unicodeには、IBM-949 [ 4 ] [ 12 ]および IBM-933 のUnicodeマッピングが含まれていますが、IBM-944 のマッピングは 2001 年に削除されました。[ 15 ]
IBM-949 は、Wansung プレーンのユーザー定義行 (先頭バイト 0xC9 および 0xFE) と Wansung プレーン外の範囲を含め、最大 1880 の UDC (ユーザー定義文字) をサポートするように設計されています。 [ 8 ]このバージョンでは、先頭バイト 0x8F–A0 には最大 1692 の UDC が含まれ、先頭バイト 0xC9 および 0xFE にはそれぞれ最大 94 (つまり、末尾バイト 0xA1–FE を含む) が含まれます。[ 11 ]ただし、 IBM-933の 2 バイト文字全体をサポートするための拡張機能が実装されると、先頭バイト 0x9A–A0 が使用されるため、ユーザー定義用に残される文字の最大数が少なくなります。[ 4 ] [ 12 ]
Unicode にマッピングすると、0xC9A1–C9FE (音節と漢字の範囲の間) は Unicodeプライベート使用領域コードポイント U+E000–E05D にマッピングされ、0xFEA1–FEFE (漢字範囲の終わりとプレーンの終わりの間) は U+E05E–E0BB にマッピングされます。万成プレーンの外側では、0x8FA0–9AA5 (2 バイト目が 0xA1–FE の範囲にある場合) はプライベート使用領域コードポイント U+E0BC–E4CA にマッピングされます。[ 4 ]これらの範囲の最後は、 0x9A 行の先頭に食い込みます(下図参照)。
これらのプライベート使用範囲はまとめてコードポイント U+E000–E4CA をカバーし、1227 UDC を IBM-949 から Unicode にマッピングできます。[ 12 ]個別のプライベート使用領域範囲 U+F843–F86E は、拡張漢字範囲内の文字をマッピングするために IBM によって使用されています。[ 12 ]これは、企業文字を U+F8FF より下、ユーザー定義文字を U+E000 より上に割り当てるという Unicode コンソーシアムの初期の推奨事項に従ったものであり、[ 18 ] IBM が内部で定義し、U+F83D–F8FF の範囲を使用する、より大きな企業プライベート使用領域スキームの一部です。[ 19 ] [ 20 ]
1992年の仕様によれば、この範囲全体はユーザー定義です。[ 11 ]しかし、IBMがICUに提供したコーデックで実装されているように、0x9AA1から0x9AA5がユーザー定義範囲の終わりです。この範囲の残りには、コードページ933に含まれるが万星コードには含まれないハングル以外の文字が含まれています。0x9AA6から0x9AABには、さまざまな技術記号または数学記号が含まれています。残りには、KS X 1001に含まれるものに加えて漢字が含まれていますが、一部はIBMによってプライベート使用領域にマッピングされています。[ 12 ]
1992年の仕様によると、この範囲全体はユーザー定義です。[ 11 ] IBMがICUに提供したコーデックで実装されているように、0x9EA1から0x9EACには拡張漢字の残りの部分が含まれています。残りの範囲には、純粋なEUC-KRでは事前に構成された形式で使用できない追加のハングル音節がいくつか含まれています。Unified Hangul Codeとは異なり、これはWansungコードに存在しないすべての非部分的なJohab音節をサポートするには不十分です。[ 12 ]
これらのうち特に重要なのは、뢔 (0x9EFC)、쌰 (0x9FE6)、쎼 (0x9FED)、쓔 (0x9FF3)、쬬 (0xA0C1) であり、これらは入力方法エディタで部分的に入力された場合、それぞれ標準の Wansung 文字 뢨、썅、쏀、쓩、쭁 の先頭に対応します。
これはKS X 1001標準と統一ハングルコード(一般的にはWindowsコードページ949として知られている)に一致します。
IBM は、U+F83D から U+F8FF までの 195 ポジションを IBM コーポレート ゾーンとして指定し、IBM 文字の往復整合性を維持する必要がある場合は、IBM 内で一貫して使用する予定です。