GBK は、中華人民共和国で使用されている簡体字中国語の文字セットGB 2312 の拡張です。GB 13000.1-93 、つまり ISO/IEC 10646:1993、または Unicode 1.1に含まれるすべての統一CJK 文字が含まれています。1993 年の最初のリリース以来、GBK はコード ページ 936/1386で Microsoft によって拡張され、その後GBK 1.0に拡張されました。GBKは、Microsoft マッピングの IANA 登録インターネット名でもあります[ 1 ] 。これは、主に0x80 の1 バイトのユーロ記号によって他の実装と異なります。
GBは中国語で国家標準を意味するGuójiā Biāozhǔnの略で、 Kは拡張(扩展kuòzhǎn )の略です。GBKは、旧規格GB 2312を繁体字だけでなく、1981年のGB 2312制定後に簡体字化された漢字でも拡張しました。GBKの登場により、かつては表記できなかった漢字を含む名前、例えば故朱鎔基元首相の名前の镕(róng)なども表記できるようになりました。[ 2 ]
2025年12月現在 GBK は、中国および周辺地域から配信されるエンコーディングの中で3 番目に多く宣言されているもので ( UTF-8とサブセットGB 2312に次ぐ)、ウェブ サーバーの 1.3% が GBK を宣言するページを配信しています。[ 3 ]ただし、ラベルに Safari と Edge を除いて、主要なウェブ ブラウザはすべて GB2312 とマークされたドキュメントを GBK とマークされているかのようにデコードします (つまり、サブセットとしてではなくGB_2312(実際には GBK が 2 番目に人気のあるエンコーディングであることを意味します)) (ただし、これらはGB_2312-80とをGB2312スーパーセット GBK としてデコードします)。[ 4 ] GBK とGB 2312エンコーディングを合わせると、中国および周辺地域では 3.5% を占めています。[ 3 ]世界的に、GBK はすべてのウェブ ページの 0.02% 未満を占め、GBK+GB2312 は0.07% 未満を占めています。[ 5 ]
1993年、中国本土、台湾、日本、韓国で使用される20,902文字を含むUnicode 1.1規格がリリースされた。これを受けて、中国はUnicode 1.1に相当する国譜規格であるGB 13000.1-93をリリースした。
GBK文字セットは、 1993年にGB 2312-80の拡張として定義され、GB 2312で使用可能な未使用のコードポイントを通じてGB 13000.1-93の文字も含まれています。したがって、GBKはGB 2312との下位互換性があります。GBKはGB 13000.1-93の規範的付属書で定義されました。[ 6 ]
マイクロソフトは、Windows 95とWindows NT 3.51にコードページ936としてGBKを実装しました。GBKは公式な標準ではありませんでしたが、Windows 95の普及により、事実上の標準となりました。GBKにはUnicode 1.1とGB 13000.1-93で定義されているすべての中国語文字が含まれていましたが、これらの標準は異なるコードテーブルを使用していました。GBKが存在する主な理由は、GB 2312-80とGB 13000.1-93の間のギャップを埋めるためでした。
1995年、中国国家情報技術標準化技術委員会は、中国語内部コード拡張仕様(中国語:汉字内码扩展规范 (GBK) 、ピンイン: Hànzì Nèimǎ Kuòzhǎn Guīfàn (GBK))バージョン1.0(GBK 1.0として知られる)を策定した。これはコードページ936のわずかな拡張である。新たに追加された95文字はGB 13000.1-1993には含まれておらず、暫定的にUnicode PUAコードポイントが割り当てられた。[ 7 ] : 534
マイクロソフトは後にコードページ936にユーロ記号を追加し、コード0x80を割り当てました。これはGBK 1.0では有効なコードポイントではありません。
2000年にGB 18030-2000規格がリリースされ、GBK 1.0との互換性を維持しながら、GBK 1.0に取って代わりました。この規格では、中国語の文字の定義数を増やし、4バイト文字空間の実装によって使用可能な文字数を拡張しました。1 バイト文字と2バイト文字で構成されるGB 18030のサブセットは、 GBKと呼ばれることもあります。ただし、一部の文字がUnicodeで定義されているため、Unicodeへのマッピングは若干変更されています。この規格の最新版であるGB 18030-2005では、 Unicode PUAにマッピングされている文字は 24文字のみです[ 8 ] ( GB 18030#PUAを参照)。
2002年にGBKはIANA文字セットとして登録されました。登録ではコードページ936のマッピングとCP936/MS936エイリアスを使用していますが、GBK 1.0仕様を参照しています。[ 1 ]2015年に公開されたW3Cの技術勧告[ 9 ]では、 GBKエンコーダーは 、1バイトのユーロ記号を持ち、4バイトのシーケンスを持たないGB 18030エンコーダーとして定義されています(一方、W3CのGBKデコーダー仕様にはそのような制限はなく、GB 18030としてデコードされます。つまり、 Unicodeのすべての文字と同じ範囲の文字を持ちます)。
文字は1バイトまたは2バイトでエンコードされます。範囲00「-」のバイトは、 ASCII7Fと同じ意味を持つ1バイトです。厳密に言えば、この範囲には95文字と33の制御コードがあります。
最上位ビットがセットされているバイトは、2バイトのうちの最初のバイトであることを示します。大まかに言うと、最初のバイトは(つまり、またはは決して)81の範囲にあり、2番目のバイトは、一部の領域を除いて、および他の領域ではです。FE80FF40A07FA1FE
より具体的には、以下のバイト範囲が定義されています。
図は、64K個の可能な2バイトコードが占める空間をグラフィカルに示したものです。緑色と黄色の領域はGBKコードポイントが割り当てられており、赤色の領域はユーザー定義文字です。色の付いていない領域は無効なバイトの組み合わせです。
![]()
前のセクションで GBK/1 と GBK/2 として示された領域は、それ自体は、通常のエンコードのGB 2312-80にすぎず、GBK/1 は非漢字領域、GBK/2 は漢字領域です。GB 2312、より正確にはその EUC-CN エンコードは、GR にロードされた他の 94² ISO-2022 文字セットと同様に、範囲A1–から 2 バイトを取得しFEます。これは、上の図の右下 4 分の 1 に相当します。ただし、GB 2312 は、領域を確保していたにもかかわらず、 AA–B0とF8–の行にコード ポイントを割り当てませんFE。GBK はこれらの行に拡張を追加しました。2 つのギャップがユーザー定義領域で埋められていることがわかります。
さらに重要なことに、GBK はバイトの範囲を拡張しました。ISO-2022 GR 範囲に 2 バイト文字があると、可能性は 94²=8,836 に制限されます。グラフィック文字と制御文字の厳密な領域という ISO-2022 モデルを放棄し、下位バイトが 1 バイト文字で上位バイトのペアが文字を表すという特徴を維持すると、理論的には 128²=16,384 の位置が可能になります。GBK はその一部を取り上げ、範囲を (各バイトにつき 94 の選択肢) からA1( FE126 の選択肢) に、812FE番目のバイトで(191 の選択肢) に40拡張FEし、合計で 24,066 の位置を実現しました。
Microsoft のコード ページ 936 は一般的に GBK と考えられています。[ 1 ] しかし、 GBK 1.0 で追加された95 個の PUA 文字はコード ページ 936 には含まれていません。コード ページ 936 には、 GBK 1.0 にはない 0x80 に1 バイトのユーロ記号があります。 [ 10 ]
GBKの後継であるGB 18030-2000は、2バイト目に使用可能な残りの範囲(30-39)を使用して、GBKをサブセットとして保持しながら、可能性の数をさらに拡張します。
表意文字の説明は GBK に含まれています。GBK は GB 2312-80 の拡張であり、GB 2312-80 にまだ含まれていない 20,902 個の Unicode バージョン 1.1 表意文字をすべて追加したものです。GBK は GB 13000.1-93 の規範的付属書として定義されています。