GB 18030 макет кодировки. «Полукоды» обозначают коды, используемые в парах как четырехбайтовые коды. | |
MIME / IANA | GB18030 |
---|---|
Псевдоним (а) | Кодовая страница 54936 |
Язык (и) | Международный, но в первую очередь предназначен для Китайского |
Стандарт | GB 18030-2005, GB 18030-2000 |
Классификация | Формат преобразования Unicode, расширенный ASCII, кодирование переменной ширины, кодирование CJK |
Расширяет | EUC-CN, GBK |
Преобразует / кодирует | ISO 10646 (Unicode ) |
, предшествующий | GBK, GB2312 |
|
GB 18030 - это стандарт правительства Китая, описываемый как информационные технологии - китайская кодировка набор символов и определяет требуемый язык и поддержку символов, необходимую для программного обеспечения в Китае. GB18030 - это зарегистрированное Интернет-имя для официального набора символов для Китайская Народная Республика (КНР) заменяет GB2312. В качестве формата преобразования Unicode (т. Е. Кодирования всего кода Unicode po ints) GB18030 поддерживает как упрощенные, так и традиционные китайские иероглифы. Он также совместим с устаревшими кодировками, включая GB2312, CP936 и GBK 1.0.
В дополнение к «кодировке символов GB18030» этот стандарт содержит требования о том, какие скрипты должны поддерживаться, поддержка шрифтов и т. Д.
Набор символов GB18030 официально называется «Китайский национальный стандарт GB 18030-2005: Информационные технологии - набор символов китайского кодирования». GB сокращает Guójiā Biāozhǔn (国家 标准), что означает национальный стандарт на китайском языке. Стандарт был опубликован China Standard Press, Пекин, 8 ноября 2005 г. Только часть стандарта является обязательной. С 1 мая 2006 г. поддержка обязательного подмножества официально требуется для всех программных продуктов, продаваемых в КНР.
GB байт. последовательность | Кодовая точка Unicode | |
---|---|---|
GB 18030-2000 | GB 18030-2005 | |
A8 BC (ḿ) | U + E7C7 | U + 1E3F ḿ |
81 35 F4 37 | U + 1E3F ḿ | U + E7C7 |
Старая версия стандарта, известная как "китайский Национальный стандарт GB 18030-2000: Информационные технологии - Набор символов с кодировкой китайских идеограмм для обмена информацией - Расширение для базового набора », был опубликован 17 марта 2000 г. Схема кодирования осталась прежней в новой версии, и единственная разница в Преобразование GB в Unicode заключается в том, что GB 18030-2000 сопоставил символ A8 BC
(ḿ) с кодовой точкой частного использования U + E7C7, а символ 81 35 F4 37
(без указание любого глифа) на U + 1E3F (ḿ), тогда как GB 18030-2005 меняет местами эти два назначения сопоставления. Больше кодовых точек теперь связано с символами из-за обновления Unicode, особенно появления унифицированных иероглифов CJK Extension B. Некоторые символы, используемые этническими меньшинствами в Китае, такие как монгольские символы и тибетские символы (-1997 и -2006), также были добавлены, что объясняет переименование стандарта.
По сравнению со своими предками отображение GB 18030 в Unicode было изменено для 81 символа, которым предварительно была назначена кодовая точка Unicode Private Use Area (U + E000 – F8FF) в GBK 1.0. и которые позже были закодированы в Unicode. Это указано в Приложении E к стандарту GB 18030. В GB 18030-2005 есть 24 символа, которые по-прежнему сопоставлены с Unicode PUA. По словам Кена Лунде, в проекте новой версии GB 18030 от 2018 г. эти сопоставления будут окончательно устранены.
байт из ГБ. последовательность | Unicode кодовая точка (синий = частное использование) | ||
---|---|---|---|
GBK 1.0 | GB 18030. -2005 | Unicode 4.1 | |
A6 D9 | U + E78D | U + FE10 ︐ | |
A6 DA | U + E78E | U + FE12 ︒ | |
A6 DB | U + E78F | U + FE11 ︑ | |
A6 DC | U + E790 | U + FE13 ︓ | |
A6 DD | U + E791 | U + FE14 ︔ | |
A6 DE | U + E792 | U + FE15 ︕ | |
A6 DF | U + E793 | U + FE16 ︖ | |
A6 EC | U + E794 | U + FE17 ︗ | |
A6 ED | U + E795 | U + FE18 ︘ | |
A6 F3 | U + E796 | U + FE19 ︙ | |
A8 BC | U + E7C7 | U + 1E3F ḿ | |
A8 BF | U + E7C8 | U + 01F9 ǹ | |
A9 89 | U + E7E7 | U + 303E 〾 | |
A9 8A | U + E7E8 | U + 2FF0 ⿰ | |
A9 8B | U + E7E9 | U + 2FF1 ⿱ | |
A9 8C | U + E7EA | U + 2FF2 ⿲ | |
A9 8D | U + E7EB | U + 2FF3 ⿳ | |
A9 8E | U + E7EC | U + 2FF4 ⿴ | |
A9 8F | U + E7ED | U + 2FF5 ⿵ | |
A9 90 | U + E7EE | U + 2FF6 ⿶ | |
A9 91 | U + E7EF | U + 2FF7 ⿷ | |
A9 92 | U + E7F0 | U + 2FF8 ⿸ | |
A9 93 | U + E7F1 | U + 2FF9 ⿹ | |
A9 94 | U + E7F2 | U + 2FFA ⿺ | |
A9 95 | U + E7F3 | U + 2FFB ⿻ | |
FE 50 | U + E815 | U + 2E81 ⺁ | |
FE 51 | U + E816 | U + 20087 𠂇 | |
FE 52 | U + E817 | U + 20089 𠂉 | |
FE 53 | U + E818 | U + 200CC 𠃌 | |
FE 54 | U + E819 | U + 2E84 ⺄ | |
FE 55 | U + E81A | U + 3473 㑳 | |
FE 56 | U + E81B | U + 3447 㑇 | |
FE 57 | U + E81C | U + 2E88 ⺈ | |
FE 58 | U + E81D | U + 2E8B ⺋ | |
FE 59 | U + E81E | U + 9FB4 龴 | |
FE 5A | U + E81F | U + 359E 㖞 | |
FE 5B | U + E820 | U + 361A 㘚 | |
FE 5C | U + E821 | U + 360E 㘎 | |
FE 5D | U + E822 | U + 2E8C ⺌ | |
FE 5E | U + E823 | U + 2E97 ⺗ | |
FE 5F | U + E824 | U + 396E 㥮 | |
FE 60 | U + E825 | U + 3918 㤘 | |
FE 61 | U + E826 | U + 9FB5 龵 | |
FE 62 | U + E827 | U + 39CF 㧏 | |
FE 63 | U + E828 | U + 39DF 㧟 | |
FE 64 | U + E829 | U + 3A73 㩳 | |
FE 65 | U + E82A | U + 39D0 㧐 | |
FE 66 | U + E82B | U + 9FB6 龶 | |
FE 67 | U + E82C | U + 9FB7 龷 | |
FE 68 | U + E82D | U + 3B4E 㭎 | |
FE 69 | U + E82E | U + 3C6E 㱮 | |
FE 6A | U + E82F | U + 3CE0 㳠 | |
FE 6B | U + E830 | U + 2EA7 ⺧ | |
FE 6C | U + E831 | U + 215D7 𡗗 | |
FE 6D | U + E832 | U + 9FB8 龸 | |
FE 6E | U + E833 | U + 2EAA ⺪ | |
FE 6F | U + E834 | U + 4056 䁖 | |
FE 70 | U + E835 | U + 415F 䅟 | |
FE 71 | U + E836 | U + 2EAE ⺮ | |
FE 72 | U + E837 | U +4337 䌷 | |
FE 73 | U + E838 | U + 2EB3 ⺳ | |
FE 74 | U + E839 | U + 2EB6 ⺶ | |
FE 75 | U + E83A | U + 2EB7 ⺷ | |
FE 76 | U + E83B | U + 2298F 𢦏 | |
FE 77 | U + E83C | U + 43B1 䎱 | |
FE 78 | U + E83D | U + 43AC 䎬 | |
FE 79 | U + E83E | U + 2EBB ⺻ | |
FE 7A | U + E83F | U + 43DD 䏝 | |
FE 7B | U + E840 | U + 44D6 䓖 | |
FE 7C | U + E841 | U + 4661 䙡 | |
FE 7D | U + E842 | U + 464C䙌 | |
FE 7E | U + E843 | U + 9FB9 龹 | |
FE 80 | U + E844 | U + 4723 䜣 | |
FE 81 | U + E845 | U + 4729 䜩 | |
FE 82 | U + E846 | U + 477C 䝼 | |
FE 83 | U + E847 | U + 478D 䞍 | |
FE 84 | U + E848 | U + 2ECA ⻊ | |
FE 85 | U + E849 | U + 4947 䥇 | |
FE 86 | U + E84A | U + 497A 䥺 | |
FE 87 | U + E84B | U + 497D 䥽 | |
FE 88 | U + E84C | U + 4982 䦂 | |
FE 89 | U + E84D | U + 4983 䦃 | |
FE 8A | U + E84E | U + 4985 䦅 | |
FE 8B | U + E84F | U + 4986 䦆 | |
FE 8C | U + E850 | U + 499F 䦟 | |
FE 8D | U + E851 | U + 499B 䦛 | |
FE 8E | U + E852 | U + 49B7 䦷 | |
FE 8F | U + E853 | U + 49B6 䦶 | |
FE 90 | U + E854 | U + 9FBA 龺 | |
FE 91 | U + E855 | U + 241FE 𤇾 | |
FE 92 | U + E856 | U + 4CA3 䲣 | |
FE 93 | U + E857 | U + 4C9F 䲟 | |
FE 94 | U + E858 | U + 4CA0 䲠 | |
FE 95 | U + E859 | U + 4CA1 䲡 | |
FE 96 | U + E85A | U + 4C77 䱷 | |
FE 97 | U + E85B | U + 4CA2 䲢 | |
FE 98 | U + E85C | U + 4D13 䴓 | |
FE 99 | U + E85D | U + 4D14 䴔 | |
FE 9A | U + E85E | U + 4D15 䴕 | |
FE 9B | U + E85F | U + 4D16 䴖 | |
FE 9C | U + E860 | U + 4D17 䴗 | |
FE 9D | U + E861 | U + 4D18 䴘 | |
FE 9E | U + E862 | U + 4D19 䴙 | |
FE 9F | U + E863 | U + 4DAE 䶮 | |
FE A0 | U + E864 | U + 9FBB 龻 |
Обязательная часть GB 18030-2005 состоит из 1-байтового и 2-байтового кодирования вместе с 4-байтовым кодированием для унифицированных иероглифов CJK Расширение A. Соответствующие кодовые точки Unicode этого подмножества, включая временные частные назначения, полностью лежат в BMP. Эти части соответствуют полностью обязательному стандарту GB 18030-2000.
Большинство крупных компьютерных компаний уже стандартизировали некоторую версию Unicode в качестве основного формата для использования в своих двоичных форматах и вызовах ОС. Однако они в основном поддерживали только кодовых точек в BMP, первоначально определенном в Unicode 1.0, который поддерживал только 65 536 кодовых точек и часто кодировался в 16 битах как UCS-2.
Сделав ход, имеющий историческое значение для программного обеспечения, поддерживающего Unicode, PRC решил обязать поддержку определенных кодовых точек за пределами BMP. Это означает, что программное обеспечение больше не может обрабатывать символы как 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 наследует плохие аспекты GBK, в первую очередь требующий специального кода для безопасного поиска символов ASCII в последовательности GB18030.
GB 18030 | кодовых точек | Unicode | |||
---|---|---|---|---|---|
байт 1 (MSB) | байт 2 | байт 3 | байт 4 | ||
00 – 7F | 128 | 0000 - 007F | |||
80 | — | недопустимый | |||
81 – FE | 40 – FE кроме 7F | 23940 | 0080 - FFFF кроме D800 - DFFF | ||
81 – 84 | 30 – 39 | 81 – FE | 30 – 39 | 39420 | |
85 | - (12600) | зарезервировано для будущего расширения символа | |||
86 – 8F | - (126000) | зарезервировано для будущего идеографического расширения | |||
не назначено | — | D800 - DFFF | |||
90 – E3 | 30 – 39 | 81 – FE | 30 – 39 | 1048576 | 10000 - 10FFFF |
E4 – FC | - (315000) | зарезервировано для будущего стандартного расширения | |||
FD – FE | - (25200) | определяемый пользователем | |||
FF | — | недопустимый | |||
Всего | 1112064 |
Одно- и двухбайтовые кодовые точки по существу GBK со знаком евро, сопоставлениями PUA для неназначенных / определенных пользователем точек и вертикальной пунктуации. Четырехбайтовую схему можно представить как состоящую из двух блоков, каждая по два байта. Каждый блок имеет формат, аналогичный двухбайтовому символу GBK, но с диапазоном значений для второго байта 0x30–0x39 (коды ASCII для десятичных цифр). Первый байт, как и раньше, имеет диапазон от 0x81 до 0xFE. Это означает, что процедура поиска строки, безопасная для GBK, также должна быть достаточно безопасной для GB18030 (во многом так же, как базовая процедура поиска , ориентированная на байты, достаточно безопасна для EUC ).
Это дает в общей сложности 1587600 (126 × 10 × 126 × 10) возможных 4-байтовых последовательностей, которых легко достаточно, чтобы покрыть 1,112 064 Unicode (17 × 65536 - 2048 суррогатов) назначенные, зарезервированные и несимвольные кодовые точки.
К сожалению, что еще больше усложняет ситуацию, нет простых правил для преобразования между 4-байтовой последовательностью и соответствующей ей кодовой точкой. Вместо этого коды распределяются последовательно (первый байт содержит наиболее значительную часть, а последний - наименее значимую часть) только кодовым точкам Unicode, которые не отображаются каким-либо другим образом. Например:
U + 00DE (Þ) → 81 30 89 37 U + 00DF (ß) → 81 30 89 38 U + 00E0 (à) → A8 A4 U + 00E1 (á) → A8 A2 U + 00E2 (â) → 81 30 89 39 U + 00E3 (ã) → 81 30 8A 30
Таблица смещения используется в версиях WHATWG и W3C GB 18030 для эффективного перевода кодовых точек. ICU и glibc используют похожие определения диапазонов, чтобы не тратить место на большие последовательные блоки.
Windows 2000 может поддерживать кодировку GB18030, если установлен пакет поддержки GB18030. 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 и GB 18030-2005 с 2.14; glibc, в частности, включает сопоставления не-PUA для GB 18030-2005, чтобы обеспечить двустороннее преобразование. GNU libiconv, альтернативная реализация iconv, часто используемая в UNIX-подобных средах, отличных от glibc, таких как Cygwin, поддерживает GB 18030, начиная с версии 1.4.
Пакет поддержки 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) китайской части. Тем не менее, требование символов PUA в стандарте препятствовало этой реализации.
Другие семейства шрифтов CJK, такие как HAN NOM и Hanazono Mincho, обеспечивают более широкий охват блоков расширения Unicode CJK, чем SimSun-18030 или даже Simsun (Founder Extended), но они также не поддерживают все кодовые точки, определенные в Unicode 5.0.0.