ГБ 18030 - GB 18030

ГБ 18030
GB18030 encoding.svg
Схема кодирования GB 18030. «Полукоды» обозначают коды, используемые парами как четырехбайтовые коды.
MIME / IANAGB18030
Псевдоним (а)Кодовая страница 54936
Язык (и)Международный, но в первую очередь предназначен для Китайский
СтандартГБ 18030-2005, ГБ 18030-2000
КлассификацияФормат преобразования Unicode, расширенный ASCII,[а] кодирование с переменной шириной, Кодирование CJK
РасширяетсяEUC-CN, ГБК
Преобразует / кодируетISO 10646 (Unicode )
ПредшествуетГБК, GB2312
  1. ^ Не в самом строгом смысле этого слова, поскольку байты ASCII могут отображаться как байты следа.

ГБ 18030 это Стандарт правительства Китая, описан как Информационные технологии - набор китайских кодированных символов и определяет требуемый язык и поддержку символов, необходимых для программного обеспечения в Китай. GB18030 зарегистрированное имя в Интернете для официального набор символов из Китайская Народная Республика (КНР) замена GB2312.[1] Как Формат преобразования Unicode[а] (т.е. кодирование всех Unicode кодовые точки), GB18030 поддерживает оба упрощенный и традиционный Китайские иероглифы. Он также совместим с устаревшими кодировками, включая GB2312, CP936,[b] и ГБК 1.0.

В дополнение к «кодировке символов GB18030» этот стандарт содержит требования о том, какие скрипты должны поддерживаться, поддержка шрифтов и т. Д.[2]

История

Набор символов GB18030 формально называется «Китайский национальный стандарт GB 18030-2005: Информационные технологии - набор символов китайского кодирования». ГБ сокращенно Guójiā Biāozhǔn (国家 标准), что означает национальный стандарт на китайском. Стандарт был опубликован China Standard Press, Пекин, 8 ноября 2005 г. Только часть стандарта является обязательной.[2] С 1 мая 2006 г. поддержка обязательного подмножества официально требуется для всех программных продуктов, продаваемых в КНР.

Различные сопоставления Unicode между версиями GB 18030
Байт ГБ
последовательность
Кодовая точка Unicode
ГБ 18030-2000ГБ 18030-2005
A8 BC (ḿ)U + E7C7U + 1E3F ḿ
81 35 F4 37U + 1E3F ḿ U + E7C7

Более старая версия стандарта, известная как «Китайский национальный стандарт GB 18030-2000: информационные технологии - набор символов, кодированных китайскими идеограммами для обмена информацией - расширение для базового набора», была опубликована 17 марта 2000 г. Схема кодирования остается прежней. то же самое в новой версии, и единственная разница в сопоставлении GB-to-Unicode заключается в том, что GB 18030-2000 сопоставил символ A8 BC (ḿ) в кодовую точку частного использования U + E7C7, а символ 81 35 F4 37 (без указания какого-либо глифа) на U + 1E3F (whereas), тогда как GB 18030-2005 меняет местами эти два назначения сопоставления.[3]:534 Больше кодовых точек теперь связано с символами из-за обновления Unicode, особенно появление Унифицированные идеограммы CJK Расширение B. Некоторые символы, используемые этнические меньшинства в Китае, Такие как Монгольские персонажи и Тибетские персонажи (ГБ 16959 -1997 и ГБ / т 20542 -2006), что объясняет переименование стандарта.

По сравнению со своими предками отображение GB 18030 в Unicode было изменено для 81 символа, которому предварительно был назначен Unicode. Зона частного использования кодовая точка (U + E000 – F8FF) в GBK 1.0, которая позже была закодирована в Unicode.[4] Это указано в Приложении E GB 18030.[3]:534[5]:499 В GB 18030-2005 есть 24 символа, которые все еще отображаются в Unicode PUA.[6] По словам Кена Лунде, в проекте новой версии GB 18030 от 2018 года эти сопоставления будут окончательно устранены.[7]

Символы частного использования в сопоставлениях GB-to-Unicode
Байт ГБ
последовательность
Кодовая точка Unicode (синий = личное использование)
GBK 1.0[8][3]:534ГБ 18030
-2005[6]
Юникод 4.1
A6 D9[9]:108U + E78DU + FE10
A6 DAU + E78EU + FE12
A6 DBU + E78FU + FE11
A6 DCU + E790U + FE13
A6 DDU + E791U + FE14
A6 DEU + E792U + FE15
A6 DFU + E793U + FE16
A6 ECU + E794U + FE17
A6 EDU + E795U + FE18
A6 F3U + E796U + FE19
A8 BCU + E7C7U + 1E3F ḿ
A8 BFU + E7C8U + 01F9 ǹ
A9 89U + E7E7U + 303E
A9 8AU + E7E8U + 2FF0
A9 8BU + E7E9U + 2FF1
A9 8CU + E7EAU + 2FF2
A9 8DU + E7EBU + 2FF3
A9 8EU + E7ECU + 2FF4
A9 8FU + E7EDU + 2FF5
A9 90U + E7EEU + 2FF6
A9 91U + E7EFU + 2FF7
A9 92U + E7F0U + 2FF8
A9 93U + E7F1U + 2FF9
A9 94[9]:173U + E7F2U + 2FFA
A9 95U + E7F3U + 2FFB
FE 50U + E815U + 2E81
FE 51U + E816U + 20087 𠂇
FE 52U + E817U + 20089 𠂉
FE 53U + E818U + 200CC 𠃌
FE 54U + E819U + 2E84
FE 55U + E81AU + 3473
FE 56U + E81BU + 3447
FE 57U + E81CU + 2E88
FE 58U + E81DU + 2E8B
FE 59U + E81EU + 9FB4
FE 5AU + E81FU + 359E
FE 5BU + E820U + 361A
FE 5CU + E821U + 360E
FE 5DU + E822U + 2E8C
FE 5EU + E823U + 2E97
FE 5FU + E824U + 396E
FE 60U + E825U + 3918
FE 61U + E826U + 9FB5
FE 62U + E827U + 39CF
FE 63U + E828U + 39DF
FE 64U + E829U + 3A73
FE 65U + E82AU + 39D0
FE 66U + E82BU + 9FB6
FE 67U + E82CU + 9FB7
FE 68U + E82DU + 3B4E
FE 69U + E82EU + 3C6E
FE 6AU + E82FU + 3CE0
FE 6BU + E830U + 2EA7
FE 6CU + E831U + 215D7 𡗗
FE 6DU + E832U + 9FB8
FE 6EU + E833U + 2EAA
FE 6FU + E834U + 4056
FE 70U + E835U + 415F
FE 71U + E836U + 2EAE
FE 72U + E837U + 4337
FE 73U + E838U + 2EB3
FE 74U + E839U + 2EB6
FE 75U + E83AU + 2EB7
FE 76U + E83BU + 2298F 𢦏
FE 77U + E83CU + 43B1
FE 78U + E83DU + 43AC
FE 79U + E83EU + 2EBB
FE 7AU + E83FU + 43DD
ФЕ 7БU + E840U + 44D6
FE 7CU + E841U + 4661
FE 7DU + E842U + 464C
FE 7EU + E843U + 9FB9
FE 80U + E844U + 4723
FE 81U + E845U + 4729
FE 82U + E846U + 477C
FE 83U + E847U + 478D
FE 84U + E848U + 2ECA
FE 85U + E849U + 4947
FE 86U + E84AU + 497A
FE 87U + E84BU + 497D
FE 88U + E84CU + 4982
FE 89U + E84DU + 4983
FE 8AU + E84EU + 4985
FE 8BU + E84FU + 4986
FE 8CU + E850U + 499F
FE 8DU + E851U + 499B
FE 8EU + E852U + 49B7
FE 8FU + E853U + 49B6
FE 90U + E854U + 9FBA
FE 91U + E855U + 241FE 𤇾
FE 92U + E856U + 4CA3
FE 93U + E857U + 4C9F
FE 94U + E858U + 4CA0
FE 95U + E859U + 4CA1
FE 96U + E85AU + 4C77
FE 97U + E85BU + 4CA2
FE 98U + E85CU + 4D13
FE 99U + E85DU + 4D14
FE 9AU + E85EU + 4D15
ФЕ 9БU + E85FU + 4D16
FE 9CU + E860U + 4D17
FE 9DU + E861U + 4D18
FE 9EU + E862U + 4D19
FE 9FU + E863U + 4DAE
FE A0U + E864U + 9FBB

Как национальный стандарт

Обязательная часть GB 18030-2005 состоит из 1-байтового и 2-байтового кодирования вместе с 4-байтовым кодированием для Унифицированные идеограммы CJK Расширение A. Соответствующие кодовые точки Unicode этого подмножества, включая временные частные назначения, полностью лежат в BMP.[3]:3 Эти части полностью соответствуют требованиям GB 18030-2000.[2]:2

Большинство крупных компьютерных компаний уже стандартизировали некоторую версию Unicode в качестве основного формата для использования в своих двоичных форматах и ​​вызовах ОС. Однако в основном они поддерживали только кодовые точки в BMP изначально определен в Unicode 1.0, который поддерживает только 65 536 кодовых точек и часто кодируется в 16 битах как UCS-2.

В шаге исторического значения для программного обеспечения, поддерживающего Unicode, КНР решил обязать поддержку определенных кодовых точек[который? ] вне БМП.[нужна цитата ] Это означает, что программное обеспечение больше не может обрабатывать символы как 16-битные объекты фиксированной ширины (UCS-2 ). Следовательно, они должны обрабатывать данные в формате переменной ширины (например, UTF-8 или же UTF-16 ), которые являются наиболее распространенными вариантами, или перейти к большему формату фиксированной ширины (например, UCS-4 или же UTF-32 ). Microsoft сделала изменение с UCS-2 на UTF-16 с Windows 2000.

Картография

GB 18030 определяет однобайтовую (ASCII), двухбайтовую (расширенный GBK) или четырехбайтовую (UTF) кодировку. Двухбайтовые коды определены в таблице поиска, в то время как четырехбайтовые коды определены последовательно (следовательно, алгоритмически), чтобы заполнить незакодированные части в UCS. GB 18030 унаследовал плохие аспекты ГБК, особенно нуждающийся в специальном коде для безопасного поиска символов ASCII в последовательности GB18030.

Кодировка GB 18030[3]:3[5]:252[10]
ГБ 18030кодовые точки[c]Unicode
байт 1 (MSB)байт 2байт 3байт 4
007F1280000007F
80инвалид[d]
81FE40FE Кроме 7F[e]239400080FFFF Кроме D800DFFF[f]
8184303981FE303939420
85— (12600)зарезервировано для будущего расширения символа
868F— (126000)зарезервировано для будущего идеографического расширения
неназначенныйD800DFFF[грамм]
90E3303981FE303910485761000010FFFF
E4FC— (315000)зарезервировано для будущего стандартного расширения
FDFE— (25200)определяемые пользователем
FFинвалид
Всего1112064

Одно- и двухбайтовые кодовые точки по сути ГБК со знаком евро, сопоставлениями PUA для неназначенных / определенных пользователем точек и вертикальной пунктуации. Четырехбайтовую схему можно представить как состоящую из двух блоков по два байта каждая. Каждый блок имеет формат, аналогичный двухбайтовому символу GBK, но с диапазоном значений для второго байта 0x30–0x39 ( ASCII коды для десятичных цифр). Первый байт, как и раньше, имеет диапазон от 0x81 до 0xFE. Это означает, что процедура поиска строки, безопасная для GBK, также должна быть достаточно безопасной для GB18030 (почти так же, как и базовый байтовый процедура поиска достаточно безопасна для EUC ).

Это дает в общей сложности 1587600 (126 × 10 × 126 × 10) возможных 4-байтовых последовательностей, которых легко достаточно для покрытия Unicode 1112 064 (17 × 65536 - 2048 суррогатов) назначенных, зарезервированных и несимвольных кодовых точек.

К сожалению, что еще больше усложняет ситуацию, нет простых правил для перевода между 4-байтовой последовательностью и соответствующей ей. кодовая точка. Вместо этого коды распределяются последовательно (первый байт содержит наиболее значимую часть, а последний - наименее значимую часть). Только в кодовые точки Unicode, которые не отображаются никаким другим способом.[час] Например:

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

Таблица смещения используется в WHATWG и W3C версия GB 18030 для эффективного перевода кодовых точек.[11] ICU[10] и glibc используют похожие определения диапазонов, чтобы не тратить место на большие последовательные блоки.

Поддерживать

Кодирование

Windows 2000 может поддерживать кодировку GB18030, если пакет поддержки GB18030[12] установлен. Windows XP может поддерживать это изначально. База данных 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,[13] и GB 18030-2005 с версии 2.14;[14] glibc, в частности, включает сопоставления не-PUA для GB 18030-2005 для достижения двустороннего преобразования.[15] GNU libiconv, альтернатива iconv реализация, часто используемая в UNIX-подобных средах, отличных от glibc, таких как Cygwin, поддерживает GB 18030 начиная с версии 1.4.[16]

Глифы

Пакет поддержки 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 в стандарте препятствовало этой реализации.[7]

Другие семейства шрифтов CJK как HAN NOM[17] и Ханадзоно Минчо[18] обеспечивают более широкий охват блоков расширения Unicode CJK, чем SimSun-18030 или даже Simsun (Founder Extended), но они также не поддерживают все кодовые точки, определенные в Unicode 5.0.0.

Смотрите также

Примечания

  1. ^ Обратите внимание, что GB18030 опускает суррогаты; видеть # Картография.
  2. ^ В знак евро является исключением, которому дается однобайтовый код 0x80 в более поздних версиях Microsoft CP936 / GBK и двухбайтовый код A2 E3 в GB18030.
  3. ^ Кодовые точки включают 66 несимволов Unicode.
  4. ^ ICU, похоже, ошибочно считает этот код действительным, чего нет ни в одной из версий опубликованных стандартов. WHATWG присваивает этот байт U + 20AC (GBK знак евро ) в его универсальном декодере gb2312-gbk-gb18030.
  5. ^ Для более тонкого разделения этого диапазона см. GBK (кодировка символов) § Кодировка.
  6. ^ Некоторые кодовые точки кодируются двумя байтами (верхняя строка), другие - четырьмя байтами (нижняя строка). U + FFFF кодируется как 84 31 A4 39 на странице 239 стандарта 2005 г., хотя стандарт дает 84 39 FE 39 для отображения BMP.
  7. ^ Это суррогатные кодовые точки; они не имеют значения вне UTF-16 кодирование.
  8. ^ Кроме того, из-за того, что кодировки U + E7C7 и U + 1E3F были поменяны местами, U + E7C7 кодируется в редакции стандарта 2005 года как 81 35 F4 37, между U + 1E3E (81 35 F4 36) и U + 1E40. (81 35 F4 38). Следовательно, только издание 2000 года является полностью последовательным в распределении четырехбайтовых кодов для иначе не отображаемых кодовых точек.

Рекомендации

  1. ^ Энтони Фок (2002-03-15). «Применение регистрации кодировки IANA для GB18030». Регистрация набора символов IANA. Получено 2016-12-05.
  2. ^ а б c d CESI (2009-07-08). "GB18030 符合 性 问与答" [Часто задаваемые вопросы о соответствии GB18030]. Центр сертификации CESI. Архивировано из оригинал на 2016-09-28. Получено 2016-10-12. Стр. 4 GB 18030-2005, GB 18030-2005, GB 18030-2005. [Продукт, соответствующий обязательной части GB 18030, должен уметь правильно а) вводить, выводить и обрабатывать все китайские символы, определенные в обязательном наборе; б) распознавать кодировки символов в обязательном наборе.] Альтернативный URL
  3. ^ а б c d е Управление по стандартизации Китая (SAC) (18 ноября 2005 г.). GB 18030-2005: Информационные технологии - набор китайских кодированных символов.
  4. ^ "Вопросы и ответы по Unicode на GB 18030". Проект ICU. Получено 10 сентября 2016.
  5. ^ а б GB 18030-2000: Информационные технологии. Набор символов китайских идеограмм для обмена информацией. Расширение для базового набора.. Управление стандартизации Китая (SAC). 2000-03-17.
  6. ^ а б Лунде, Кен (2006). «Обновление L2 / 06-394 на GB 18030: 2005». Реестр документов Технического комитета Unicode. Получено 28 сентября 2016.
  7. ^ а б Лунде, Кен. «Если gb18030 пересмотрен, рассмотрите возможность согласования стандарта кодирования · Проблема № 27 · whatwg / encoding». GitHub. Кроме того, поддержка кодовых точек PUA в контексте шрифтов Noto CJK и Source Han совершенно не запускается, в основном потому, что они являются гарнитурами Pan-CJK, а использование PUA в таких контекстах чрезвычайно опасно. [...] Один из них. несколько дней назад мои друзья из CESI поделились со мной текстом из окончательного варианта. Это подтвердило, что требование PUA для 24 символов отменяется.
  8. ^ «Группа: ГБК 外 字». GlyphWiki. Получено 11 сентября 2016.
  9. ^ а б Лунде, Кен (декабрь 2008 г.). CJKV Обработка информации. O'Reilly Media, Inc. ISBN  978-0-596-51447-1. Получено 11 сентября 2016.
  10. ^ а б Официальная таблица сопоставления между GB18030-2000 и Unicode. ICU - Международные компоненты Unicode. 2001-02-21. Проверено 4 сентября 2016 г.
  11. ^ "Стандарт кодирования # gb18030-index". WHATWG. Получено 2016-09-24.
  12. ^ Microsoft. «Пакет поддержки GB18030». Архивировано из оригинал на 2012-06-05.
  13. ^ Дреппер, Ульрих. "Модуль GB18030 iconv для glibc". glibc git. Получено 29 ноября 2016.
  14. ^ Дреппер, Ульрих. "Обновление GB18030 до версии 2005". glibc git. Получено 29 ноября 2016.
  15. ^ Веймер, Флориан; О'Донелл, Карлос. «Статус таблиц GB18030 (# 19575)». Исходное ПО Bugzilla. Получено 29 ноября 2016.
  16. ^ «НОВОСТИ - libiconv.git - libiconv». git.savannah.gnu.org. Получено 2016-10-13.
  17. ^ VietUnicode. "/ ханном". sourceforge.net. Получено 2016-10-13.
  18. ^ «Шрифты Hanazono». fonts.jp. Получено 2016-10-13.

внешняя ссылка