GB 18030

GB 18030は、中華人民共和国（中国）が制定した文字コード（文字セット）の国家規格である。規格名は現在 () といい、当初は () といった。IANA登録名はGB18030である。
概要.
正式な規格として制定されることのなかったそれまでの拡張文字セットGBKに代わる上位集合であり、互換性も維持している。GB 18030は漢字のほかに少数民族言語の文字をサポートする。漢字は、中華人民共和国の規範漢字である簡体字のほか、Unicodeに含まれる繁体字や日本、韓国などで使われる漢字をも含む。
この規格の初版は信息産業部電子工業標準化研究所により起草され、国家質量技術監督局により2000年3月17日に発布された。現行の版は、国家質量監督検験検疫総局と中国国家標準化管理委員会によって2005年11月8日に発布され、2006年5月1日に実施されている。いずれも規格票は中国標準出版社から出版された。この規格のサポートは、中国で販売されるすべてのソフトウェア製品に対して義務づけられている。
GB 18030は従来の文字コードと互換性を維持したUnicode伝送形式（Unicode Transformation Format、すなわちすべてのUnicode符号位置を符号化する文字符号化方式）であるとみなせる。言いかえると、GB 18030はUTF-8（ASCIIと互換性を維持している）の中国版である。UTF-8と同様、GB 18030はASCIIの上位集合でありUnicode符号位置の範囲全体を表現できる。加えて、GB 18030はGB 2312の上位集合でもある。GB 18030は、GB 2312の拡張であるGBKとの互換性も維持している。ただしユーロ記号については、GBKのマイクロソフトによる実装であるコードページ936の後期バージョンで1バイト符号の0x80を割り当てたのに対し、GB 18030では2バイト符号のA2 E3を割り当てている。 
マッピングデータの一部は （GBKと同様）変換表に基づく。残りは計算で求められる。GB 18030はその基となった古い規格の悪い側面も継承している。最も目立つのは、GB 18030のシーケンスからASCII文字を安全に検索するには特別なコーディングが必要なことである。
ほとんどの主要なコンピュータ企業は、各社のバイナリ形式やOS呼び出しで使うための基本的な形式として何らかのバージョンのUnicode上ですでに標準化を行っていた。しかし、ほとんどの場合Unicode 1.0で当初から定義されていた基本多言語面 (BMP) の符号位置しかサポートしていなかった。BMPは65,536の符号位置しかサポートしておらず、しばしば16ビットでUCS-2として符号化された。
ソフトウェアのUnicodeサポートが重要になっていくにつれて、中国はBMP外の特定の符号位置サポートを義務づけることを決定した。これは、ソフトウェアはもはや文字を16ビット固定長の存在 (UCS-2) であるとみなしてお茶を濁せなくなったことを意味する。そのため、UTF-8やUTF-16のような可変幅形式のデータを処理するか、より大きなUCS-4やUTF-32のような固定幅形式に移行するかのどちらかを行わなければならなくなった。マイクロソフトはWindows 2000でUCS-2からUTF-16への変更を行った。
技術的な詳細.
4バイトコードの枠組みは、それぞれのサイズが2バイトの単位2つからなると考えられる。各単位はGBKの2バイト文字に似た形式だが、第2バイトの値の範囲は0x30-0x39（10進数のASCIIコード）である。第1バイトは以前と同様、0x81から0xFEの範囲である。これはGBKで安全な文字列検索ルーチンはGB 18030でも比較的安全な可能性が高いことを意味する。これは基本的なバイト指向の検索ルーチンがEUCでも比較的安全なことと似ている。
これにより、可能な4バイトシーケンスすべてで合計 1,587,600 (126 × 10 × 126 × 10) の符号位置が与えられ、Unicodeの 1,112,046 の符号位置を容易にカバーできる。
さらに複雑なことに4バイトシーケンスを対応する符号位置との間で変換するための単純な規則は存在しない。代わりに、コードは1バイト符号や2バイト符号に割り当てられていないUnicode符号位置にのみ順番に割り当てられる (先頭バイトが上位桁を含み、最終バイトが下位桁を含む)。
例
 U+00DE (Þ) → 81 30 89 37
 U+00DF (ß) → 81 30 89 38
 U+00E0 (à) → A8 A4
 U+00E1 (á) → A8 A2
 U+00E2 (â) → 81 30 89 39
 U+00E3 (ã) → 81 30 8A 30
GBKとの互換性.
GB 18030はGBKの上位互換ということになっているが、Unicodeへの割り当てという観点からは必ずしも互換性がない。
GBKに収録された文字のうち95文字は制定時点でUnicodeに収録されていなかったため、一時的に私用領域へ割り当てられた。うちUnicode 3.0までに収録された80文字は、GB 18030-2000では正式にUnicodeへ収録されたときの符号位置へ割り当てを変更されている。GB18030-2005ではさらに1文字の割り当てが4バイト符号と入れ替えられた。残り14文字もUnicode 4.1までにすべて収録されたが、GB 18030での割り当ては変更されていない。
外部リンク.
日本語
中国語（簡体字）
英語