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āozhgun , что на китайском языке означает национальный стандарт , а 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 , стандартный эквивалент 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 с однобайтовым знаком евро и без четырехбайтовых последовательностей (в то время как спецификация декодера W3C GBK не имеет такого ограничения, декодирует как GB 18030 , т.е. с тем же набором букв, что и весь Юникод ).
Символ кодируется как 1 или 2 байта. Байт в диапазоне 00
— 7F
это один байт, который означает то же самое, что и в ASCII . Строго говоря, в этом диапазоне 95 символов и 33 управляющих кода.
Байт с установленным старшим битом указывает, что он является первым из двух байтов. Грубо говоря, первый байт находится в диапазоне 81
— FE
(то есть никогда 80
или FF
), а второй байт 40
— A0
кроме 7F
одних областей и A1
— FE
для других.
Более конкретно, определены следующие диапазоны байтов:
На следующем рисунке в графической форме показано пространство всех возможных 2-байтовых кодов размером 64 КБ. Зеленым и желтым областям присвоены коды GBK, красным — определяемые пользователем символы. Неокрашенные области представляют собой недопустимые комбинации байтов.
Области, указанные в предыдущем разделе как GBK/1 и GBK/2, взятые сами по себе, представляют собой просто GB 2312-80 в его обычной кодировке, причем GBK/1 представляет собой регион, не являющийся ханзи, а GBK/2 - регион ханзи. GB 2312, или, точнее, его кодировка EUC-CN, принимает пару байтов из диапазона A1
– FE
, как и любой набор символов ISO-2022 94², загруженный в GR. Это соответствует нижней правой четверти рисунка выше. Однако GB 2312 не присваивает никаких кодовых точек строкам, расположенным в AA
– B0
и F8
– FE
, даже несмотря на то, что он разбил территорию. GBK добавил расширения к этим строкам. Вы можете видеть, что два пробела были заполнены определяемыми пользователем областями.
Что еще более важно, GBK расширил диапазон байтов. Наличие двухбайтовых символов в диапазоне ISO-2022 GR дает ограничение в 94²=8836 возможностей. Отказавшись от модели строгих областей ISO-2022 для графики и управляющих символов, но сохранив особенность младших байтов, являющихся 1-байтовыми символами, и пар старших байтов, обозначающих символ, вы потенциально можете иметь 128² = 16 384 позиции. GBK принимает на себя часть этого, расширяя диапазон от A1
– FE
(94 варианта для каждого байта) до 81
– FE
(126 вариантов) для первого байта и 40
– FE
(191 вариант) для второго байта, всего 24 066 позиций.
Кодовая страница 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.