GB 18030 — это китайский государственный стандарт , описываемый как «Информационные технологии — набор китайских кодированных символов» , который определяет требуемую поддержку языка и символов, необходимую для программного обеспечения в Китае . GB18030 — это зарегистрированное интернет-имя официального набора символов Китайской Народной Республики ( КНР), заменяющее GB2312 . [1] Как формат преобразования Unicode [a] (т. е. кодировка всех кодовых точек Unicode ), GB18030 поддерживает как упрощенные , так и традиционные китайские символы . Он также совместим с устаревшими кодировками, включая GB/T 2312 , CP936 , [b] и GBK 1.0.
Консорциум Unicode предупредил разработчиков, что последняя версия этого китайского стандарта, GB 18030-2022 , вводит то, что они называют «разрушительными изменениями» по сравнению с предыдущей версией GB 18030-2005, «включая 33 различных символа и 55 позиций кода». [2] GB 18030-2022 вступил в силу с 1 августа 2023 года. [3] Он был реализован в ICU 73.2; и в Java 21, [4] и перенесен в более старые версии Java 8, 11, 17 (выпуски LTS) и 20.0.2. [5]
В дополнение к методу кодирования этот стандарт содержит требования о том, какие дополнительные письменности и языки должны быть представлены, и к кому этот стандарт применим. [6] Однако этот стандарт не определяет официальные формы символов для китайских иероглифов; это стандартизировано в Списке общепринятых стандартных китайских иероглифов .
Набор символов GB18030 официально называется «Китайский национальный стандарт GB 18030-2005: Информационные технологии — китайский набор кодированных символов». GB — это сокращение от Guójiā Biāozhǔn (国家标准), что означает национальный стандарт на китайском языке. Стандарт был опубликован издательством China Standard Press в Пекине 8 ноября 2005 года. Только часть стандарта является обязательной. [6] С 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 Private Use Area (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, поэтому для соответствия предпочтению non-PUA необходимо изменение на 4-байтовую последовательность. [11]
Первая версия GB 18030, обозначенная как GB 18030-2000 Information Technology—Chinese coded character set for information interchange — Extension for the basic set , состоит из 1-байтовых и 2-байтовых кодировок вместе с 4-байтовой кодировкой для CJK Unified Ideographs Extension A, соответствующей таковым в Unicode 3.0. Соответствующие кодовые точки Unicode этого подмножества, включая временные частные назначения, полностью лежат в BMP . Эти части являются полностью обязательными в GB 18030-2000. [6] : 2 Большинство крупных компьютерных компаний уже стандартизировали некоторую версию Unicode в качестве основного формата для использования в своих двоичных форматах и вызовах ОС. Однако в основном они поддерживали только кодовые точки в BMP, изначально определенном в Unicode 1.0, который поддерживал только 65 536 кодовых точек и часто кодировался в 16 бит как UCS-2 . Этот стандарт по сути представляет собой расширение на основе GBK с дополнительными символами в расширении A унифицированных идеографических символов CJK.
Вторая версия, обозначенная как GB 18030-2005 Information Technology — Chinese coded character set, имеет тот же обязательный поднабор, что и 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—Chinese coded character set , предписывает часть поддержки предложений CJK Unified Ideographs Extension B в GB 18030-2005, а также обновления до Unicode 11.0, включая радикалы канси и CJK Unified Ideographs URO , Extension C, D, E и F. Дополнительные языки также признаются GB 18030-2022, такие как часть арабского , тайле , нового тайлуэ , тайтхам , лису и мяо . GB 18030-2022 также вводит три уровня реализации с требованием «все продукты, использующие этот стандарт, должны реализовывать уровень реализации 1», который включает 66 новых символов BMP в 4-байтовой области кодировки, которые были добавлены между Unicode 3.1 и Unicode 11.0. Уровень реализации 2 требует поддержки Списка общепринятых стандартных китайских иероглифов , а уровень реализации 3 требует всех остальных указанных в стандарте регионов. [11]
С конца 2022 по 2023 год проекты дополнительных поправок должны быть доступны для публичного обсуждения в GB 18030-2022. Текущий проект обновляет до Unicode 15.1 символы идеографического описания , унифицированные идеограммы CJK URO, расширения A, B, C, G, H и I. [15] [16] [17] Первоначально, в конце 2022 года, он должен был поместить 897 новых синографических символов в Плоскость 10 ( шестнадцатеричная : 0A), еще не названную астральную плоскость Unicode , для сертификации настоящих имен граждан в Китае, но в конечном итоге репертуар (сокращенный до 622 символов после экспертной оценки) был ускоренно включен в Unicode 15.1 в сентябре 2023 года в качестве блока расширения I унифицированных идеограмм CJK . [18] После этого проект поправки был изменен для использования кодовых точек расширения I. [17]
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 × 65 536 − 2048 суррогатов) назначенных, зарезервированных и несимвольных кодовых точек Unicode .
К сожалению, чтобы еще больше усложнить ситуацию, нет простых правил для перевода между последовательностью из 4 байтов и соответствующей ей кодовой точкой . Вместо этого коды выделяются последовательно (первый байт содержит самую значимую часть, а последний — наименее значимую часть) только для кодовых точек Unicode, которые не отображаются каким-либо другим образом. [h] Например:
U+00DE (Þ) → 81 30 89 37U+00DF (ß) → 81 30 89 38U+00E0 (а) → А8 А4U+00E1 (б) → A8 A2U+00E2 (в) → 81 30 89 39U+00E3 (г) → 81 30 8A 30
Таблица смещений используется в версии GB 18030 WHATWG и W3C для эффективного перевода кодовых точек. [20] ICU [19] и glibc используют похожие определения диапазонов, чтобы избежать траты места на большие последовательные блоки.
GB 18030 поддерживается в Windows с момента выпуска Windows 95 как кодовая страница 54936. [21] Windows 2000 и XP предлагают пакет поддержки GB18030. [22] База данных PostgreSQL с открытым исходным кодом поддерживает GB18030 посредством полной поддержки UTF-8, т. е. путем преобразования в UTF-8 и обратно. Аналогично Microsoft SQL Server поддерживает GB18030 путем преобразования в UTF-16 и обратно.
Более конкретно, поддержка кодировки GB18030 в Windows означает, что кодовая страница 54936 поддерживается MultiByteToWideChar
и WideCharToMultiByte
. Благодаря обратной совместимости сопоставления многие файлы в GB18030 могут быть фактически успешно открыты как устаревшая кодовая страница 936, то есть GBK, даже если кодовая страница 54936 не поддерживается. Однако это верно только в том случае, если рассматриваемый файл содержит только символы GBK. Загрузка завершится неудачей или приведет к повреждению результата, если файл содержит символы, которых нет в GBK (см. примеры в § Технические подробности).
GNU glibc gconv, библиотека кодеков символов, используемая в большинстве дистрибутивов Linux, поддерживает GB 18030-2000 с версии 2.2 [23] и GB 18030-2005 с версии 2.14; [24] glibc в частности включает не-PUA сопоставления для GB 18030-2005 для достижения преобразования в обе стороны. [25] GNU libiconv , альтернативная реализация iconv , часто используемая в не-glibc UNIX-подобных средах, таких как Cygwin , поддерживает GB 18030 с версии 1.4. [26]
По состоянию на 2022 год «поддержка некитайских письменностей остается необязательной» [27] (предположительно, только для поддержки отображения/шрифта; и в Китае, поскольку кодировка представляет собой полную UTF). Известно, что стандарт поддерживает английский/ASCII, и «следующие некитайские письменности признаются GB 18030-2022: арабский, тибетский, монгольский, тай-ле, новый тай-луэ, тай-тхам, и, лису, хангыль (корейский) и мяо». [27]
Пакет поддержки 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) китайской части. [6] : 4 Тем не менее, требование символов PUA в стандарте затруднило эту реализацию. [28]
Microsoft YaHei и DengXian, предоставленные Microsoft, обновлены в 2023 году для соответствия уровню реализации GB 18030-2022 2, а SimSun обновлен для соответствия уровню реализации 3. [29]
Source Han Sans (и его аналог Noto Sans CJK) уже соответствуют уровню реализации GB 18030-2022 2, когда стандартное обновление для GB 18030 будет объявлено в ноябре 2022 года [обновлять]. Однако Source Han Serif (и его аналог Noto Serif CJK) на данный момент не соответствует, и предоставляется обновление, гарантирующее соответствие шрифта уровню реализации 2. Аналогично Microsoft YaHei и PingFang (Apple) требуют небольшого количества дополнений URO, связанных с уровнем реализации 1, чтобы соответствовать уровню реализации GB 18030-2022 2. [27]
Другие семейства шрифтов CJK , такие как HAN NOM [30] и Hanazono Mincho [31], обеспечивают более широкий охват блоков расширения Unicode CJK, чем SimSun-18030 или даже SimSun (Founder Extended), но они не поддерживают все кодовые точки, определенные в GB 18030.
84 31 A4 39
на странице 239 стандарта 2005 года, хотя стандарт дает сведения только 84 39 FE 39
для отображения BMP.Страница 4.
Руководство по эксплуатации, англ.出、处理GB 18030-2005强制部分规定的全部汉字字符;②产品可以正确识别GB [Изделие, соответствующее обязательной части GB 18030, должно быть способно правильно а) вводить, выводить и обрабатывать все китайские символы, определенные в обязательном наборе; б) распознавать кодировки символов обязательного набора.]
Альтернативный URL-адрес
{{cite book}}
: |work=
проигнорировано ( помощь )Страница 4.
Руководство по эксплуатации, англ.出、处理GB 18030-2005强制部分规定的全部汉字字符;②产品可以正确识别GB [Изделие, соответствующее обязательной части GB 18030, должно быть способно правильно а) вводить, выводить и обрабатывать все китайские символы, определенные в обязательном наборе; б) распознавать кодировки символов обязательного набора.]
Кроме того, поддержка кодовых точек PUA в контексте шрифтов Noto CJK и Source Han — это полная неудача, в основном потому, что это шрифты Pan-CJK, а использование PUA в таких контекстах крайне опасно. [...] Один из моих друзей в CESI несколько дней назад поделился со мной текстом из финального черновика. Это подтвердило, что требование PUA для 24 символов снимается.