GB 18030 — это правительственный стандарт Китая , называемый « Информационные технологии — набор китайских кодированных символов» , который определяет язык и поддержку символов, необходимые для программного обеспечения в Китае . GB18030 — зарегистрированное интернет-имя для официального набора символов Китайской Народной Республики (КНР), заменяющее GB2312 . [1] В качестве формата преобразования Юникода [a] (т.е. кодирования всех кодовых точек Юникода ) GB18030 поддерживает как упрощенные , так и традиционные китайские символы . Он также совместим с устаревшими кодировками, включая GB2312, CP936 , [b] и GBK 1.0.
Помимо «кодировки символов GB18030», этот стандарт содержит требования относительно того, какие сценарии должны поддерживаться, поддержка шрифтов и т. д. [2]
Обновленный стандарт GB18030-2022 несовместим [ как? ] , и дата вступления его в силу - 1 августа 2023 года. [3] Он был реализован ICU 73.2; и в Java 21, [4] и обратно портированы в более старые версии Java 8, 11, 17 (выпуски LTS) и 20.0.2. [5]
По состоянию на 2022 год, что касается реализации шрифтов, «только упрощенные китайские шрифты семейств шрифтов Noto Sans CJK (Google), Source Han Mono (Adobe) и Source Han Sans (Adobe) уже соответствуют стандарту GB 18030-2022 Implementation. Уровень 2 [..] Microsoft YaHei (Microsoft), Noto Serif CJK (Google), PingFang (Apple) и Source Han Serif (Adobe) — по крайней мере, версии по состоянию на ноябрь 2022 г. [обновлять]— требуют небольшого количества дополнений URO, которые связанный с уровнем реализации 1 , чтобы обеспечить соответствие стандарту GB 18030-2022 уровня реализации 2 ». [6]
Набор символов GB18030 официально называется «Китайский национальный стандарт GB 18030-2005: Информационные технологии — набор китайских кодированных символов». GB сокращает Guójiā Biāozhhoun (国家标准), что на китайском языке означает национальный стандарт . Стандарт был опубликован China Standard Press, Пекин, 8 ноября 2005 г. Только часть стандарта является обязательной. [2] С 1 мая 2006 года поддержка обязательного подмножества официально требуется для всех программных продуктов, продаваемых в КНР.
Более старая версия стандарта, известная как «Китайский национальный стандарт GB 18030-2000: Информационные технологии — набор символов, закодированный китайскими иероглифами для обмена информацией — расширение для базового набора», была опубликована 17 марта 2000 года. Схема кодирования остается прежней. то же самое в новой версии, и единственное отличие в сопоставлении GB с Unicode заключается в том, что GB 18030-2000 сопоставил символ A8 BC
(ḿ) с кодовой точкой частного использования U + E7C7, а символ 81 35 F4 37
(без указания какого-либо глифа) с U +. 1E3F (ḿ), тогда как GB 18030-2005 меняет местами эти два назначения отображения. [7] : 534 Благодаря обновлению Unicode с символами теперь связано больше кодовых точек , особенно благодаря появлению CJK Unified Ideographs Extension B. Некоторые символы, используемые этническими меньшинствами в Китае , такие как монгольские и тибетские иероглифы (GB 16959-1997). и GB/T 20542-2006), что объясняет переименование стандарта.
По сравнению с его предшественниками, отображение GB 18030 в Unicode было изменено для 81 символа, которым предварительно был присвоен кодовый знак области частного использования Unicode (U + E000 – F8FF) в GBK 1.0 и которые позже были закодированы в Unicode. [8] Это указано в Приложении E к стандарту GB 18030. [7] : 534 [9] : 499 В стандарте GB 18030-2005 24 символа все еще отображаются в Unicode PUA. [10]
В обновлении GB 18030-2022 требования к символам, отображаемым в PUA, были полностью отменены, и все символы должны быть сопоставлены с их стандартными кодовыми точками Unicode. Из них 18 сопоставлений были обновлены путем замены позиций, аналогично тому, что произошло между GBK и GB 18030. Остальные шесть сохранили двухбайтовые сопоставления PUA, так что для следования не-PUA необходимо изменить 4-байтовую последовательность. предпочтение. [11]
Первая версия GB 18030, получившая обозначение GB 18030-2000 Information Technology — китайский кодированный набор символов для обмена информацией — расширение базового набора , состоит из 1-байтовой и 2-байтовой кодировок, а также 4-байтовой кодировки для унифицированных иероглифов CJK. Расширение A соответствует расширениям Unicode 3.0. Соответствующие кодовые элементы Unicode этого подмножества, включая предварительные частные назначения, полностью лежат в BMP . Эти детали полностью обязательны в GB 18030-2000. [2] : 2 Большинство крупных компьютерных компаний уже стандартизировали ту или иную версию Unicode в качестве основного формата для использования в своих двоичных форматах и вызовах ОС. Однако в основном они поддерживали только кодовые точки в BMP , первоначально определенном в Unicode 1.0, который поддерживал только 65 536 кодовых точек и часто кодировался в 16 битах как UCS-2 . Этот стандарт по сути представляет собой расширение, основанное на GBK с дополнительными символами в расширении A CJK Unified Ideographs Extension.
Вторая версия получила обозначение GB 18030-2005 « Информационные технологии». Китайский кодированный набор символов имеет тот же обязательный поднабор, что и GB 18030-2000, из 1-, 2- и 4-байтовых кодировок. [7] : 3 Эта версия также включает полное расширение CJK Unified Ideographs Extension B в разделе 4-байтовой кодировки, который находится за пределами BMP [10] в качестве рекомендательного требования поддержки. [14] Однако, поскольку во время обработки информации необходимо поддерживать включение CJK Unified Ideographs Extension B в 4-байтовую область, программному обеспечению больше не удается обрабатывать символы как 16-битные объекты фиксированной ширины ( UCS-2 ). . Следовательно, они должны либо обрабатывать данные в формате переменной ширины (как в случае с UTF-8 или UTF-16 ), что является наиболее распространенным выбором, либо перейти к более крупному формату с фиксированной шириной (т. е. UTF-32 ). Microsoft внесла изменения с UCS-2 на UTF-16 в Windows 2000. Эта версия соответствует Unicode 3.1, а также обеспечивает поддержку хангыля ( корейского ), монгольского (включая маньчжурский , ясный сценарий , сибе херген , галик ), тай-нуэа , Тибетский , уйгурский / казахский / киргизский и йи .
Третья и последняя версия, GB 18030-2022 Information Technology — набор символов с китайской кодировкой , требует поддержки предложений в части CJK Unified Ideographs Extension B в GB 18030-2005, а также обновлений до Unicode 11.0, включая Kangxi Radicals и CJK Unified Ideographs Extension. C, D, E и F. Дополнительные языки также распознаются GB 18030-2022, такие как часть арабского языка , Тай Ле , Нью Тай Лю , Тай Там , Лису и Мяо . GB 18030-2022 также вводит три уровня реализации с требованием «все продукты, использующие этот стандарт, должны реализовывать уровень реализации 1», который включает 66 новых символов BMP в 4-байтовой области кодирования, которые были добавлены между Unicode 3.1 и Unicode 11.0. Уровень реализации 2 требует поддержки Таблицы общих стандартных китайских символов , а уровень реализации 3 требует всех других указанных регионов в стандарте. [11]
GB 18030 определяет однобайтовую (ASCII), двухбайтовую (расширенный GBK) или четырехбайтовую (UTF) кодировку. Двухбайтовые коды определяются в справочной таблице, а четырехбайтовые коды определяются последовательно (следовательно, алгоритмически) для заполнения некодированных частей в UCS . GB 18030 унаследовал плохие стороны GBK , в первую очередь необходимость в специальном коде для безопасного поиска символов ASCII в последовательности GB18030.
Одно- и двухбайтовые кодовые точки по существу представляют собой GBK со знаком евро, сопоставлениями PUA для неназначенных/определяемых пользователем точек и вертикальными знаками пунктуации. Четырехбайтовую схему можно рассматривать как состоящую из двух блоков, каждый из которых состоит из двух байтов. Каждая единица имеет формат, аналогичный двухбайтовому символу GBK, но с диапазоном значений второго байта 0x30–0x39 ( коды ASCII для десятичных цифр). Первый байт, как и раньше, имеет диапазон от 0x81 до 0xFE. Это означает, что процедура строкового поиска, безопасная для GBK, также должна быть достаточно [ необходимы пояснения ] безопасной для GB18030 (во многом так же, как базовая процедура байт-ориентированного поиска достаточно безопасна для EUC ).
Это дает в общей сложности 1 587 600 (126 × 10 × 126 × 10) возможных 4-байтовых последовательностей, чего вполне достаточно для покрытия 1 112 064 (17 × 65536 — 2048 суррогатов) назначенных, зарезервированных и несимвольных кодовых точек Unicode .
К сожалению, ситуация еще больше усложняется отсутствием простых правил перевода между 4-байтовой последовательностью и соответствующей ей кодовой точкой . Вместо этого коды распределяются последовательно (первый байт содержит наиболее значимую часть, а последний — наименее значимую часть) только для кодовых точек Юникода, которые не отображаются каким-либо другим способом. [ч] Например:
U+00DE (Þ) → 81 30 89 37U+00DF (ß) → 81 30 89 38U+00E0 (à) → A8 A4U+00E1 (á) → A8 A2U+00E2 (â) → 81 30 89 39U+00E3 (ã) → 81 30 8A 30
Таблица смещений используется в версии GB 18030 WHATWG и W3C для эффективного преобразования кодовых точек. [16] ICU [15] и glibc используют схожие определения диапазонов, чтобы избежать траты места на большие последовательные блоки.
GB 18030 поддерживается в Windows с момента выпуска Windows Vista под кодовой страницей 54936. [17] Windows 2000 и XP предлагают пакет поддержки GB18030. [18] База данных PostgreSQL с открытым исходным кодом поддерживает GB18030 благодаря полной поддержке UTF-8, то есть путем преобразования его в UTF-8 и обратно. Аналогичным образом Microsoft SQL Server поддерживает GB18030 путем преобразования в UTF-16 и обратно.
Более конкретно, поддержка кодировки GB18030 в Windows означает, что кодовая страница 54936 поддерживается MultiByteToWideChar
и WideCharToMultiByte
. Благодаря обратной совместимости сопоставления многие файлы в GB18030 могут быть успешно открыты как устаревшая кодовая страница 936, то есть GBK, даже если кодовая страница 54936 не поддерживается. Однако это верно только в том случае, если рассматриваемый файл содержит только символы GBK. Загрузка завершится неудачей или приведет к повреждению результата, если файл содержит символы, которых нет в GBK (примеры см. в § Технические подробности).
gconv GNU glibc , библиотека кодеков символов, используемая в большинстве дистрибутивов Linux, поддерживает GB 18030-2000, начиная с 2.2, [19] и GB 18030-2005, начиная с 2.14; [20] glibc, в частности, включает в себя сопоставления без PUA для GB 18030-2005, чтобы обеспечить двустороннее преобразование. [21] GNU libiconv , альтернативная реализация iconv , часто используемая в UNIX-подобных средах, не относящихся к glibc, таких как Cygwin , поддерживает GB 18030, начиная с версии 1.4. [22]
По состоянию на 2022 год «поддержка некитайских скриптов по-прежнему остается необязательной» [6] (предположительно только для поддержки отображения/шрифтов; и в Китае, поскольку кодировка является полной UTF). Известно, что стандарт поддерживает английский/ASCII, а GB 18030-2022 распознает следующие некитайские алфавиты: арабский, тибетский, монгольский, тай ле, новый тай лю, тай там, и, лису, хангыль (корейский), и Мяо». [6]
Пакет поддержки GB18030 для Windows содержит SimSun18030.ttc, файл коллекции шрифтов TrueType, который объединяет два китайских шрифта: SimSun-18030 и NSimSun-18030. Шрифт SimSun 18030 включает в себя все символы [ необходимы пояснения ] в Unicode 2.1, а также новые символы, найденные в блоке Unicode CJK Unified Ideographs Extension A, хотя, несмотря на свое название, он не содержит глифов для всех символов, закодированных GB 18030, как и все ( около миллиона) Кодовые точки Unicode до U+10FFFF могут быть закодированы как GB 18030. Сертификация соответствия GB 18030 требует только правильной обработки и распознавания глифов в обязательной (двухбайтовой и CJK Ext. A) китайской части. [2] : 4 Тем не менее, требование символов PUA в стандарте препятствовало этой реализации. [23]
Другие семейства шрифтов CJK, такие как HAN NOM [24] и Hanazono Mincho [25], обеспечивают более широкий охват блоков расширения Unicode CJK, чем SimSun-18030 или даже SimSun (Founder Extended), но они не поддерживают все кодовые точки, определенные в Unicode 5.0. 0 либо.
84 31 A4 39
на странице 239 стандарта 2005 года, хотя стандарт дает возможность 84 39 FE 39
отображения BMP.Страница 4.
Руководство по эксплуатации, GB 18030-2005. 、处理GB 18030-2005强制部分规定的全部汉字字符;②产品可以正确识别GB 18030 -2005强制性部分规定的全部汉字字符对应的编码。 [Продукт, соответствующий обязательной части GB 18030, должен быть способен правильно а) вводить, выводить и обрабатывать все китайские символы, определенные в обязательном наборе; б) распознавать кодировки символов обязательного набора.]
Альтернативный URL
{{cite book}}
: |work=
игнорируется ( помощь )Страница 4.
Руководство по эксплуатации, GB 18030-2005. 、处理GB 18030-2005强制部分规定的全部汉字字符;②产品可以正确识别GB 18030 -2005强制性部分规定的全部汉字字符对应的编码。 [Продукт, соответствующий обязательной части GB 18030, должен быть способен правильно а) вводить, выводить и обрабатывать все китайские символы, определенные в обязательном наборе; б) распознавать кодировки символов обязательного набора.]
Кроме того, поддержка кодовых точек PUA в контексте шрифтов Noto CJK и Source Han совершенно бесполезна, главным образом потому, что это шрифты Pan-CJK, а использование PUA в таких контекстах чрезвычайно опасно.[...] Один из них мои друзья из CESI несколько дней назад поделились со мной текстом окончательного проекта. Это подтвердило, что требование PUA для 24 символов снимается.