GBK
出典: フリー百科事典『ウィキペディア(Wikipedia)』
GBKは、中華人民共和国で使われている簡体字用の文字コードGB 2312の拡張である。
GBは国家規格の意味で、Kが拡張という意味である。GBKは古い規格GB 2312に繁体字のみならず1981年にGB 2312が制定された後で簡化された漢字も拡張している。GBKの登場によって、中国の元首相朱鎔基 (中国語:朱镕基) の名前に含まれる「镕」の文字など、かつて表現不可能だった一部の人名が表現可能になった。
目次 |
[編集] 歴史
1993年、中国大陸、台湾、日本および韓国で使われる20,902の文字を含んだUnicode 1.1規格が公開された。これに続き、中国はUnicode 1.1と等価な国家規格 (中国語:guóbiāo) であるGB 13000.1-93を公開した。
GBKの文字集合は1993年にGB 2312-80の拡張として定義されたが、GB 2312で未使用のコードポイントを利用してGB 13000.1-93の文字も含んでいた。このためGBKはGB 2312に対して上位互換である。
MicrosoftはGBKをWindows 95でコードページ936として定義した。GBKが公式規格になったことは一度もないが、Windows 95が広く使われるようになったことによりGBKは事実上の標準となった。GBKはUnicode 1.1およびGB 13000.1-93で定義されているすべての漢字を含んでいたが、それらとは異なる符号表を使っていた。GBKの基本的な存在意義は、単にGB 2312-80とGB 13000.1-93の落差の橋渡しであった。
2000年、GB 18030-2000規格が公開されてGBKを置き替えたが、まだ互換性は保たれている。GB 18030は定義されている漢字の数を増やし、4バイト文字空間の実装によって使用可能な文字数を拡張した。
[編集] 符号化方式
文字は1バイトか2バイトで符号化される。00
–7F
の範囲にあるバイトは1バイトで、ASCIIにあるものと同じ意味を持つ。厳密に言うと、96の文字と32の制御符号がこの範囲にある。
上位ビットが立てられたバイトは2バイト文字の第1バイトであることを示す。おおざっぱに言うと、第1バイトの範囲は81
–FE
であり (すなわち、80
とFF
は含まず)、第2バイトは一部の領域は40
–FE
に、他の領域が80
–FE
にある。
より具体的には、以下の範囲のバイトが定義されている:
範囲 | 第1バイト | 第2バイト | コードポイント | 文字 |
---|---|---|---|---|
水準 GBK/1 | A1 –A9 |
A1 –FE |
846 | 717 |
水準 GBK/2 | B0 –F7 |
A1 –FE |
6,768 | 6,763 |
水準 GBK/3 | 81 –A0 |
40 –FE (7F を除く) |
6,080 | 6,080 |
水準 GBK/4 | AA –FE |
40 –A0 (7F を除く) |
8,160 | 8,160 |
水準 GBK/5 | A8 –A9 |
40 –A0 (7F を除く) |
192 | 166 |
利用者定義 | AA –AF |
A1 –FE |
564 | |
利用者定義 | F8 –FE |
A1 –FE |
658 | |
利用者定義 | A1 –A7 |
40 –A0 (7F を除く) |
672 | |
合計: | 23,940 | 21,886 |
2バイト符号で表現可能な64K空間すべてを以下の図に示す。緑と黄色の領域がGBKに割り当てられたコードポイントであり、赤が利用者定義文字用である。色付きでない領域は不正なバイトの組み合わせである。
[編集] 他の文字コードとの関係
前節にGBK/1およびGBK/2として示された領域は、単にGB 2312-80を通常の方法で符号化したものである。GB 2312 (より正確にはそのEUC-CNによる符号化) は、ISO/IEC 2022でGRに呼び出された他のあらゆる94² 文字集合と同様、A1
–FE
の範囲からバイトの対を取る。これは上図において右下の区画に相当する。しかし、GB 2312はAA
–AF
とF8
–FE
にある区には手を付けず、いかなるコードポイントも割り当てていない。
GBKはこの領域に拡張を追加した。この二者の違う部分は利用者定義領域によって埋められている。
より重要なこととして、GBKはバイトの範囲を拡張した。ISO/IEC 2022のGR領域に持てる文字の数には94²=8,836文字の制限がある。図形文字用と制御文字用に厳格な範囲を与えるというISO/IEC 2022のモデルは放棄するが、下位バイトは1バイト文字であり上位バイトの対が文字を示すという機能を残すことにより、潜在的に128²=16,384の符号位置を使えるようになった。GBKはその一部を採用し、範囲をA1
–FE
(バイトごとに94の選択肢がある) から、第1バイトは 81
–FE
(126の選択肢) へ、第2バイトは 40
–FE
(191の選択肢) へ拡張した。
マイクロソフトのコードページ936は通常GBKであると考えられている。GBKと同じ範囲のバイトを使い、比較してみても同じ割り当てがなされているように見える。コードページ936は、GBKに収録されている21,886文字のうち95文字をUnicodeの私用領域に割り当てている[1][2]。これらはGBKが制定された時点でUnicodeに収録されていなかった文字である。
GBKの後継であるGB 18030-2000は、第2バイトとして使用可能な残りの範囲を使って、さらに使用可能なコードポイントの数を拡張しているが、GBKを部分集合として残している。
[編集] 脚注
- ^ "use of private area in GBK converter" 2007年12月25日閲覧.
- ^ "PRC GBK (XGB)" Template:Cite webの呼び出しエラー: 引数 accessdate は必須です。 - Microsoft typographyのCharacter sets and codepagesにかつて存在したGBKとUnicodeの間の変換表。
[編集] 外部リンク
- MicrosoftのGBK用の参照ページ
- GBKからUnicodeへのマッピング 注意: Microsoft typographyの表に含まれていた私用領域との対応は含まれていない。
- GBK符号表 注意: これは使用可能な符号空間を、2か所を除きすべて示しているため合計は32256グリフになり (32352と、図に示されていない暗黙の1バイトASCII 符号)、23940や21886より多い。
- GBKとGB 2312からGB 18030への進化
- GBK(5) HP社のmanページに、文字範囲に関しての優れた説明がある。