Введение

Кодировка упрощенных китайских символов GBK является расширением набора символов GB 2312 для упрощенных китайских иероглифов, используемого в Китайской Народной Республике. Она включает в себя все унифицированные символы CJK, содержащиеся в GB 13000.1 93, то есть ISO/IEC 10646:1993 или Unicode 1.1. С момента первого выпуска в 1993 году GBK был расширен Microsoft в кодовой странице 936/1386, которая затем была расширена до GBK 1.0. GBK также является зарегистрированным в IANA интернет-именем для отображения Microsoft, которое отличается от других реализаций главным образом однобайтовым символом евро по адресу 0x80. GB – это сокращение от Guójiā Biāozhǔn (国家标准), что означает «национальный стандарт» на китайском языке, а K – это «расширение» (扩展 kuòzhǎn). GBK расширил старый стандарт GB 2312 не только традиционными китайскими иероглифами, но и китайскими иероглифами, которые были упрощены после создания GB 2312 в 1981 году. С появлением GBK некоторые имена с иероглифами, которые ранее невозможно было представить, например, 镕 (róng) в имени бывшего премьер-министра Китая Чжу Ронгцзи, теперь могут быть представлены. По состоянию на 2022 год GBK является третьей по популярности кодировкой, используемой в Китае и на связанных территориях (после UTF-8 и подмножества GB 2312), при этом 1,9% веб-серверов обслуживают страницы, объявляющие кодировку GBK. Однако все основные веб-браузеры декодируют документы, помеченные как GB2312, как если бы они были помечены как GBK, за исключением Safari и Edge при указании GB 2312. В совокупности кодировки GBK и GB 2312 занимают 5,5% рынка в Китае и на связанных территориях.

История

В 1993 году был выпущен стандарт Unicode 1.1, включающий 20 902 символа, используемых в материковом Китае, Тайване, Японии и Корее. Впоследствии Китай выпустил GB 13000.1 93, стандарт Guobiao, эквивалентный Unicode 1.1. В 1993 году набор символов GBK был определен как расширение GB 2312 80, также включающее символы GB 13000.1 93 посредством неиспользованных кодовых точек, доступных в GB 2312. Следовательно, GBK обратно совместим с GB 2312. Определение GBK было приведено в нормативном приложении к GB 13000.1 93. Microsoft реализовала GBK в Windows 95 и Windows NT 3.51 как кодовую страницу 936. Несмотря на то, что GBK никогда не был официальным стандартом, широкое распространение Windows 95 привело к тому, что GBK стал де-факто стандартом. Хотя GBK включал все китайские символы, определенные в Unicode 1.1 и GB 13000.1 93, эти стандарты использовали различные таблицы кодов. Основная причина его создания заключалась в преодолении разрыва между GB 2312 80 и GB 13000.1 93. В 1995 году Китайский национальный комитет по стандартизации информационных технологий разработал спецификацию расширения внутреннего кода китайских иероглифов (s=汉字内码扩展规范 (GBK)), версия 1.0, известную как GBK 1.0, которая является незначительным расширением кодовой страницы 936. 95 новых символов отсутствовали в GB 13000.1 1993 и были временно назначены кодовым точкам Unicode PUA. Позже Microsoft добавила знак евро в кодовую страницу 936, присвоив ему код 0x80. Это не является допустимой кодовой точкой в GBK 1.0. В 2000 году был выпущен стандарт GB 18030 2000, который заменил, но сохранил совместимость с GBK 1.0. Он увеличил количество определений китайских символов и расширил число возможных символов за счет реализации четырехбайтовых кодовых пространств. Подмножество GB 18030, состоящее из одно- и двухбайтовых символов, иногда также называют GBK. Однако сопоставление с Unicode было незначительно изменено, поскольку некоторые символы теперь определены в Unicode. В самой последней версии стандарта, GB 18030 2005, только 24 символа по-прежнему сопоставлены с Unicode PUA (см. GB 18030#PUA). В 2002 году GBK был зарегистрирован как charset IANA; регистрация использует сопоставление кодовой страницы 936, а также псевдонимы CP936/MS936, но ссылается на спецификацию GBK 1.0. Определяет кодировщик GBK как кодировщик GB 18030 с однобайтовым знаком евро и без четырехбайтовых последовательностей (в то время как спецификация декодера GBK от W3C не имеет таких ограничений и декодирует как GB 18030, то есть с тем же диапазоном символов, что и весь Unicode).