GBK

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動

GBK は、中華人民共和国で使われている簡体字用の文字コード GB 2312 の拡張である。正式には《汉字内码扩展规范》という。1995年12月に国家技術監督局標準化司と電子工業部科技与質量監督司が発布・実施した「技術規範指導性文件(文件=文書)」であり、正式な規格ではない。

GB国家規格 (Guójiā Biāozhǔn, 国家标准) を、K拡張 (Kuòzhǎn, 扩展) を表す。GBKは古い規格GB 2312に繁体字のみならず1981年にGB 2312が制定された後で簡化された漢字も拡張している。GBKの登場によって、首相職である国務院総理を務めた朱鎔基中国語: 朱镕基)の名前に含まれる「」の文字など、かつては表現不可能だった一部の人名が表現可能になった。

歴史[編集]

1993年、中国大陸台湾日本および韓国で使われる2万0902字を含んだUnicode 1.1規格が公開された。これに続き、中国はUnicode 1.1と等価な国家規格である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バイトで符号化される。007Fの範囲にあるバイトは1バイトで、ASCII にあるものと同じ意味を持つ。厳密に言うと、96 の文字と32の制御符号がこの範囲にある。

上位ビットが立てられたバイトは2バイト文字の第1バイトであることを示す。おおざっぱに言うと、第1バイトの範囲は81FEであり(すなわち、80FFは含まず)、第2バイトは一部の領域は40FEに、他の領域が80FEにある。

より具体的には、以下の範囲のバイトが定義されている:

GBKの文字符号化範囲
範囲 第1バイト 第2バイト コードポイント 文字
水準 GBK/1 A1A9 A1FE 846 717
水準 GBK/2 B0F7 A1FE 6,768 6,763
水準 GBK/3 81A0 40FE (7Fを除く) 6,080 6,080
水準 GBK/4 AAFE 40A0 (7Fを除く) 8,160 8,160
水準 GBK/5 A8A9 40A0 (7Fを除く) 192 166
利用者定義 AAAF A1FE 564
利用者定義 F8FE A1FE 658
利用者定義 A1A7 40A0 (7Fを除く) 672
合計: 23,940 21,886

2バイト符号で表現可能な64K空間すべてを以下の図に示す。緑と黄色の領域がGBKに割り当てられたコードポイントであり、赤が利用者定義文字用である。色付きでない領域は不正なバイトの組み合わせである。

GBK encoding ja.svg

他の文字コードとの関係[編集]

前節にGBK/1およびGBK/2として示された領域は、単にGB 2312-80を通常の方法で符号化したものである。GB 2312(より正確にはそのEUC-CNによる符号化)は、ISO/IEC 2022 でGRに呼び出された他のあらゆる94²文字集合と同様、A1FE の範囲からバイトの対を取る。これは上図において右下の区画に相当する。しかし、GB 2312はAAAFF8FE にある区には手を付けず、いかなるコードポイントも割り当てていない。

GBKはこの領域に拡張を追加した。この二者の違う部分は利用者定義領域によって埋められている。

より重要なこととして、GBKはバイトの範囲を拡張した。ISO/IEC 2022 のGR領域に持てる文字の数には94² = 8,836字の制限がある。図形文字用と制御文字用に厳格な範囲を与えるという ISO/IEC 2022 のモデルは放棄するが、下位バイトは1バイト文字であり上位バイトの対が文字を示すという機能を残すことにより、潜在的に128² = 16,384の符号位置を使えるようになった。GBKはその一部を採用し、範囲をA1FE (バイトごとに94の選択肢がある)から、第1バイトは 81FE (126 の選択肢)へ、第2バイトは 40FE (191 の選択肢) へ拡張した。

マイクロソフトのコードページ936は通常GBKであると考えられている。GBKと同じ範囲のバイトを使い、比較してみても同じ割り当てがなされているように見える。コードページ936は、GBKに収録されている 2万1886 字のうち95字をUnicodeの私用領域に割り当てている[1][2]。これらはGBKが制定された時点でUnicodeに収録されていなかった文字である。

GBKの後継であるGB 18030-2000は、第2バイトとして使用可能な残りの範囲を使って、さらに使用可能なコードポイントの数を拡張しているが、GBKを部分集合として残している。

脚注[編集]

  1. ^ use of private area in GBKconverter”. 2002年8月28日時点のオリジナル[リンク切れ]よりアーカイブ。2007年12月25日閲覧。
  2. ^ PRC GBK (XGB)”. 2000年8月16日時点のオリジナル[リンク切れ]よりアーカイブ。2008年12月7日閲覧。-Microsoft typographyCharacter sets and codepagesにかつて存在したGBKとUnicodeの間の変換表。

外部リンク[編集]