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, [1] которое отличается от других реализаций в первую очередь однобайтовым знаком евро в 0x80.
GB — это сокращение от Guójiā Biāozhǔn , что означает национальный стандарт на китайском языке, в то время как K означает расширение (扩展kuòzhǎn ). GBK не только расширил старый стандарт GB 2312 традиционными китайскими иероглифами, но и китайскими иероглифами, которые были упрощены после создания GB 2312 в 1981 году. С появлением GBK некоторые имена с иероглифами, которые ранее не представлялись, например, иероглиф 镕 ( róng ) в имени бывшего китайского премьер-министра Чжу Жунцзи , теперь представляются. [2]
По состоянию на октябрь 2022 года [обновлять]GBK является третьей по популярности кодировкой, обслуживаемой в Китае и на его территориях (после UTF-8 и подмножества GB 2312 ), при этом 1,9% веб-серверов обслуживают страницу, на которой указано GBK. [3] Однако все основные веб-браузеры декодируют документы с пометкой GB2312, как если бы они были помечены как GBK, за исключением Safari и Edge на этикетке GB_2312
. [4] Вместе кодировки GBK и GB 2312 имеют совокупное присутствие в Китае и на его территориях в размере 5,5%. [3] Во всем мире GBK составляет менее 0,07% всех веб-страниц, а GBK+GB2312 — 0,2%. [5]
В 1993 году был выпущен стандарт Unicode 1.1, включающий 20 902 символа, используемых в материковом Китае , Тайване , Японии и Корее . После этого Китай выпустил GB 13000.1-93 , стандартный эквивалент Guobiao Unicode 1.1.
Набор символов GBK был определен в 1993 году как расширение GB 2312-80 , а также включал символы GB 13000.1-93 через неиспользуемые кодовые точки, доступные в GB 2312. Следовательно, GBK обратно совместим с GB 2312. GBK был определен в нормативном приложении к GB 13000.1-93. [6]
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 году Национальный технический комитет по стандартизации информационных технологий Китая разработал Спецификацию расширения внутреннего кода Китая ( китайский :汉字内码扩展规范 (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
Позже Microsoft добавила знак евро в кодовую страницу 936 и присвоила ему код 0x80. Это недопустимая кодовая точка в GBK 1.0.
В 2000 году был выпущен стандарт GB 18030-2000 , заменивший GBK 1.0, но сохранивший совместимость с ним. Он увеличил количество определений китайских иероглифов и расширил количество возможных символов за счет внедрения четырехбайтовых пробелов. Подмножество GB 18030, состоящее из однобайтовых и двухбайтовых символов, иногда также называют GBK . Сопоставление с Unicode было немного изменено, поскольку некоторые символы теперь определены в Unicode. В самой последней форме стандарта, GB 18030-2005, только 24 [8] символа по-прежнему сопоставлены с Unicode PUA (см. GB 18030#PUA .)
В 2002 году GBK был зарегистрирован как набор символов IANA; регистрация использует сопоставление кодовой страницы 936, а также псевдонимы CP936/MS936, но ссылается на спецификацию GBK 1.0. [1] Технические рекомендации W3C, опубликованные в 2015 году [ 9], определяют кодер GBK как кодер GB 18030 с однобайтовым знаком евро и без четырехбайтовых последовательностей (в то время как спецификация декодера GBK W3C не имеет таких ограничений и декодирует как GB 18030 , т. е. с тем же диапазоном букв, что и весь Unicode ).
Символ кодируется как 1 или 2 байта. Байт в диапазоне 00
– 7F
это один байт, который означает то же самое, что и в ASCII . Строго говоря, в этом диапазоне 95 символов и 33 управляющих кода.
Байт с установленным старшим битом указывает, что это первый из 2 байтов. Грубо говоря, первый байт находится в диапазоне 81
– FE
(то есть никогда 80
или FF
), а второй байт 40
– A0
за исключением 7F
некоторых областей и A1
– FE
для других.
Более конкретно, определены следующие диапазоны байтов:
В графической форме следующий рисунок показывает пространство всех 64K возможных 2-байтовых кодов. Зеленые и желтые области назначены кодовым точкам GBK, красные — для определяемых пользователем символов. Неокрашенные области — недопустимые комбинации байтов.
Области, обозначенные в предыдущем разделе как GBK/1 и GBK/2, взятые сами по себе, представляют собой просто GB 2312-80 в своей обычной кодировке, где GBK/1 является регионом, отличным от hanzi, а GBK/2 — регионом hanzi. GB 2312, или, точнее, его кодировка EUC-CN, берет пару байтов из диапазона A1
– FE
, как и любой набор символов 94² ISO-2022, загруженный в GR. Это соответствует нижней правой четверти иллюстрации выше. Однако GB 2312 не назначает никаких кодовых точек строкам, расположенным в AA
– B0
и F8
– FE
, хотя он и обозначил территорию. GBK добавил расширения к этим строкам. Вы можете видеть, что два пробела были заполнены пользовательскими областями.
Что еще более важно, GBK расширил диапазон байтов. Наличие двухбайтовых символов в диапазоне ISO-2022 GR дает предел в 94²=8836 возможностей. Отказавшись от модели строгих областей ISO-2022 для графических и управляющих символов, но сохранив особенность младших байтов как однобайтовых символов и пар старших байтов, обозначающих символ, вы потенциально можете иметь 128²=16384 позиций. GBK принимает участие в этом, расширяя диапазон от A1
– FE
(94 выбора для каждого байта) до 81
– FE
(126 вариантов) для первого байта и 40
– FE
(191 вариант) для второго байта, что в общей сложности составляет 24066 позиций.
Кодовая страница Microsoft 936 обычно считается GBK. [1] Однако 95 символов PUA, добавленных в GBK 1.0, не включены в кодовую страницу 936. Кодовая страница 936 также имеет однобайтовый знак евро в позиции 0x80, которого нет в GBK 1.0. [10]
Преемник GBK, GB 18030-2000 , использует оставшийся диапазон, доступный второму байту ( 30
– 39
), для дальнейшего расширения числа возможностей, сохраняя при этом GBK как подмножество.
Символы идеографического описания находятся в GBK — расширении к GB 2312-80, которое добавило все 20 902 идеограммы Unicode версии 1.1, которых еще нет в GB 2312-80. GBK определяется как нормативное приложение к GB 13000.1-93.