GB/T 2312-1980 — это ключевой официальный набор символов Китайской Народной Республики , используемый для упрощенных китайских иероглифов . GB2312 — это зарегистрированное интернет-имя для EUC-CN , которое является его обычной закодированной формой. GB относится к стандартам Guobiao (国家标准), тогда как суффикс T (推荐; tuījiàn ; «рекомендация») обозначает необязательный стандарт. [1]
Первоначально GB/T 2312-1980 был обязательным национальным стандартом, обозначенным как GB 2312-1980 . Однако после выпуска Бюллетеня национальных стандартов Китайской Народной Республики в 2017 году GB 2312 больше не является обязательным, и его стандартный код был изменен на GB/T 2312-1980 . [2] GB/T 2312-1980 был заменен на GBK и GB 18030 , которые включают дополнительные символы, но GB/T 2312 по-прежнему широко используется как подмножество этих кодировок.
По состоянию на сентябрь 2022 года [обновлять]GB2312 является второй по популярности кодировкой, обслуживаемой из Китая и территорий (после UTF-8 ), при этом 5,5% веб-серверов, обслуживающих страницу, объявляют ее. [3] Во всем мире GB2312 объявлена на 0,1% всех веб-страниц. [4] Однако все основные веб-браузеры декодируют документы, помеченные GB2312, как если бы они были помечены кодировкой GBK, за исключением Safari и Edge на этикетке GB_2312
. [5]
Существует аналогичный набор символов, известный как дополнительный набор кодов китайских иероглифов GB/T 12345 для обмена информацией , который дополняет GB/T 2312 традиционными формами символов, заменяя упрощенные формы в их коде qūwèi, и некоторыми дополнительными 62 символами. [6] [7] Шрифты в кодировке GB часто поставляются парами, один с набором символов GB/T 2312 (упрощенным), а другой с набором символов GB/T 12345 (традиционным). Существуют дополнительные наборы кодировок GB, дополняющие GB/T 2312, включая GB/T 7589 Набор кодов китайских идеограмм для обмена информацией - 2-й дополнительный набор и GB/T 7590 Набор кодов китайских идеограмм для обмена информацией - 4-й дополнительный набор , который предоставляет дополнительные [варианты китайских иероглифов|варианты символов] в том же формате кодировки qūwèi (позже использованном в ISO-2022-CN), но не имеет никакого отношения к символам, закодированным в GB/T 2312.
В то время как GB/T 2312 охватывает более 99,99% современного использования китайского текста, [8] исторические тексты и многие имена остаются вне сферы действия. Старый стандарт GB 2312 включает 6763 китайских иероглифа (на двух уровнях: первый упорядочен по чтению, второй по радикалу , затем по количеству черт), а также символы и знаки препинания, японскую кану , греческий и кириллический алфавиты , чжуинь и двухбайтовый набор букв пиньинь с тоновыми знаками. В более поздней версии GB/T 2312-1980 насчитывается 7445 букв.
Символы в GB/T 2312 расположены в сетке 94×94 (как в ISO 2022 ), а двухбайтовая кодовая точка каждого символа выражается в форме qūwèi (区位), которая определяет строку (区; qū ) и положение символа в строке (ячейка;位; wèi ). (Эта структура такая же, как и в других национальных стандартах набора символов CJK на основе ISO-2022 ; сравните kuten .) Например, символ «外» (что означает: иностранный) расположен в строке 45, позиции 66, [9] , таким образом, его код qūwèi равен 45-66.
Строки (пронумерованные от 1 до 94) содержат следующие символы:
Строки 10–15 и 88–94 не назначены.
Для GB/T 2312-1980 он содержит 682 знака и 6763 китайских иероглифа.
EUC-CN часто используется в качестве кодировки символов (т. е. для внешнего хранилища) в программах, работающих с GB/T 2312, тем самым поддерживая совместимость с ASCII . Для представления каждого символа, не найденного в ASCII , используются два байта . Значение первого байта находится в диапазоне (161–247), а значение второго байта находится в диапазоне (161–254). Поскольку все эти диапазоны выходят за рамки ASCII, как и UTF-8, при использовании EUC-CN можно проверить, является ли байт частью многобайтовой конструкции, но не является ли байт первым или последним.0xA1–0xF7
0xA1–0xFE
По сравнению с UTF-8 , GB/T 2312 (как собственный, так и закодированный в EUC-CN) более эффективен для хранения: в то время как UTF-8 использует три байта [a] на идеограф CJK , GB/T 2312 использует только два. Однако GB/T 2312 не охватывает столько идеографов, сколько Unicode.
Чтобы сопоставить кодовые точки qūwèi с байтами EUC, добавьте 160 ( 0xA0
) к номеру строки (или qū, 区) и номеру ячейки/столбца ( ten или wèi, 位). Результат сложения с номером строки кодовой точки сформирует старший байт, а результат сложения с номером ячейки кодовой точки сформирует младший байт.
Например, чтобы закодировать символ "外" в ячейке qūwèi 45-66, старший байт будет использовать номер строки 45: 45+160=205= 0xCD
, а младший байт будет взят из ячейки номер 66: 66+160=226= 0xE2
. Таким образом, полное кодирование выглядит так <CD E2>
. [10] [11]
ISO-2022-CN — это еще одна форма кодировки GB/T 2312, которая также является кодировкой, указанной в официальной документации. Эта кодировка ссылается на стандарт ISO-2022 , который также использует два байта для кодирования символов, отсутствующих в ASCII. Однако вместо использования расширенной области ASCII, ISO-2022 использует тот же диапазон байтов, что и ASCII: значение первого байта находится в диапазоне 0x21–0x77
(33–119), а значение второго байта находится в диапазоне 0x21–0x7E
(33–126). Поскольку диапазон байтов значительно перекрывает ASCII, требуются специальные символы для указания того, находится ли символ в диапазоне ASCII или является частью двухбайтовой последовательности расширенной области, а именно функции Shift Out и Shift In . Это создает риск неправильного кодирования, поскольку неправильная обработка текста может привести к потере информации.
Чтобы сопоставить кодовые точки qūwèi с байтами ISO-2022, добавьте 32 ( 0x20
) к номеру строки (или qū, 区) и номеру ячейки/столбца (или wèi, 位). Результат сложения с номером строки кодовой точки сформирует старший байт, а результат сложения с номером ячейки кодовой точки сформирует младший байт, аналогично кодировке EUC.
Например, чтобы закодировать символ "外" в ячейке qūwèi 45-66, старший байт будет использовать номер строки 45: 45+32=77= 0x4D
, а младший байт будет взят из ячейки номер 66: 66+32=98= 0x62
. Таким образом, полное кодирование выглядит так <4D 62>
. [11]
HZ — это еще одна кодировка GB/T 2312, которая в основном используется для сообщений Usenet ; символы представлены теми же парами байтов, что и в ISO-2022-CN, но последовательности байтов, обозначающие начало и конец диапазона текста GB 2312, отличаются.
В таблицах ниже, где для префиксного байта или кодирующего байта дана пара шестнадцатеричных чисел, меньшее из них (с неустановленным или недоступным восьмым битом) используется при кодировании через GL ( 0x 21-0x7E), как в ISO-2022-CN или HZ-GB-2312 , а большее (с установленным восьмым битом) используется в более типичном случае кодирования через GR (0xA1-0xFE), как в EUC-CN , GBK или GB 18030. Числа Qūwèi даны в десятичном виде .
Когда GB/T 2312 кодируется через GR, оба байта имеют установленный восьмой бит (т.е. больше 0x7F). GBK и GB 18030 также используют двухбайтовые коды, в которых только первый байт имеет установленный восьмой бит для целей расширения: такие коды находятся за пределами плоскости GB/T 2312 и здесь не табулируются.
Эта диаграмма описывает общую компоновку основной плоскости набора символов GB/T 2312 по байту свинца. Для байтов свинца, используемых для символов, отличных от hanzi , предоставляются ссылки на диаграммы на этой странице, в которых перечислены символы, закодированные под этим байтом свинца. Для байтов свинца, используемых для hanzi , предоставляются ссылки на соответствующий раздел индекса hanzi Викисловаря .
В следующих таблицах перечислены символы, не являющиеся символами hanzi, доступные в GB/T 2312, GB/T 12345 и в двухбайтовой области 1 GB 18030 (которая примерно соответствует области non-hanzi GB/T 2312). Примечания сделаны там, где они отличаются, и где GB 6345.1 и ISO-IR-165 отличаются от них. Для сравнения сделаны перекрестные ссылки на статьи о других национальных наборах символов CJK.
Сопоставления Unicode для интерпункта ( китайский :间隔点; букв. «разделительная точка») и длинного тире ( китайский :破折号) в подмножестве GBK и GB 18030 , соответствующие GB/T 2312 ( U+00B7 · СРЕДНЯЯ ТОЧКА и U+2014 — КОРОТКОЕ ТИРЕ ), отличаются от тех, которые перечислены в GB2312.TXT ( U+30FB・КАТАКАНА СРЕДНЯЯ ТОЧКА и U+2015 ― ГОРИЗОНТАЛЬНАЯ ШРИФТА ), который является файлом данных, который ранее предоставлялся Консорциумом Unicode [13], хотя он был обозначен как устаревший с августа 2011 года [14] и больше не размещается по состоянию на сентябрь 2016 года.
По состоянию на 2015 год Microsoft .Net Framework следует сопоставлениям GB 18030 при сопоставлении этих двух символов в данных, помеченных gb2312
, тогда как ICU , [15] iconv-1.14, [16] php-5.6, ActivePerl-5.20, Java 1.7 и Python 3.4 [17] следуют GB2312.TXT в ответ на gb2312
метку. Ruby 2.2 совместим с обеими реализациями; он внутренне преобразует конфликтующие символы в подмножество GB 18030. Технические рекомендации W3C / WHATWG по использованию с HTML5 указывают кодировку GBK, которая должна быть выведена для потоков, помеченных gb2312
, что в свою очередь использует декодер GB18030. [18]
Другие отличающиеся сопоставления были определены и использованы отдельными поставщиками, [13] включая одно от Apple . [19]
Эта строка содержит знаки препинания, математические операторы и другие символы. В следующей таблице сначала показаны сопоставления GB 18030 [20] для этих символов GB/T 2312, а затем любые другие задокументированные сопоставления.
Эта строка содержит различные типы маркеров списка. Строчные формы римских цифр не были включены в исходный GB/T 2312 [21] или в GB/T 12345, [6], но включены в кодовую страницу Windows 936 [22] и GB 18030. [ 20] Знак евро также был добавлен в GB 18030. [20]
Эта строка содержит ISO 646-CN (GB/T 1988-80), национальный аналог ASCII . Сравните строку 3 KS X 1001 , которая делает то же самое с версией ISO 646 Южной Кореи , и строку 3 JIS X 0208 и KPS 9566 , которые включают только буквенно-цифровой поднабор, но в той же компоновке. В следующей таблице перечислены ISO 646-CN.
При использовании в кодировке, допускающей комбинацию с ASCII, такой как EUC-CN (и ее надмножество GB 18030 ), эти символы обычно реализуются как полноширинные символы, поэтому сопоставления с блоками форм половинной и полной ширины используются, как показано ниже. GB 6345.1 также обрабатывает эту строку как полноширинную и добавляет формы половинной ширины (как выше) как строку 10. [1] Apple в основном сопоставляет эту строку с кодовыми точками полной ширины, как показано ниже, но использует сопоставления неполной ширины для надчеркивания и знака юаня , как указано выше. [19]
В этом наборе содержится хирагана для письма на японском языке .
Сравните со строкой 4 JIS X 0208 , которой соответствует эта строка, и со строкой 10 KS X 1001 и KPS 9566 , которые используют ту же компоновку, но в другой строке.
Этот набор содержит катакану для записи японского языка . Однако японский знак долгой гласной , который используется в тексте катаканы и включен в строку 1 JIS X 0208 , не включен в GB/T 2312, хотя он добавлен в GBK и GB 18030 за пределами основной плоскости GB/T 2312, [24] в 0xA960. [20]
Сравните со строкой 5 стандарта JIS X 0208 , которой соответствует эта строка, и со строкой 11 стандартов KS X 1001 и KPS 9566 , которые используют ту же компоновку, но в другой строке.
В этой строке содержится базовая поддержка современного греческого алфавита без диакритических знаков и конечной сигмы .
Выделенные символы являются формами представления знаков препинания для вертикального письма и не включены в GB/T 2312, но включены в эту строку GB/T 12345, [1] [6] кодовой страницей Windows 936 , [22] упрощенным китайским языком Mac OS, [19] и GB 18030. [20] Они рассматриваются как «стандартные расширения GB 2312». [19] Наоборот, ISO-IR-165 включает в эту строку шаблонные полуграфические символы (в основном без точных аналогов в Unicode), конфликтуя с позициями кода, используемыми для вертикальных расширений. [25]
Сравните со строкой 6 JIS X 0208 , которой соответствует эта строка, когда вертикальные формы не включены, и со строкой 6 KPS 9566 , которая включает те же греческие буквы в той же компоновке, но добавляет римские цифры вместо вертикальных форм. Сравните со строкой 5 KS X 1001 , которая смещает греческие буквы, чтобы включить римские цифры первыми.
Этот набор включает в себя оба случая из 33 букв кириллического письма , достаточных для написания современного русского алфавита и болгарского алфавита , хотя другие формы кириллицы требуют дополнительных букв. [27]
Сравните со строкой 7 стандарта JIS X 0208 , которой соответствует эта строка, а также со строкой 12 стандарта KS X 1001 и строкой 5 стандарта KPS 9566 , которые используют ту же компоновку, но в разных строках.
Эта строка содержит символы бопомофо и пиньинь , за исключением букв ASCII (которые находятся в строке 3). Выделенные символы — это те, которые не входят в базовый набор GB 2312, но добавлены GB 6345.1 , [19] а также включены в GB/T 12345, [1] [6] кодовую страницу Windows 936 , [22] упрощенный китайский язык Mac OS [19] и GB 18030. [20] Они рассматриваются как «стандартные расширения GB 2312». [19]
Стандарт GB 6345.1 рассматривает пиньинь в этой строке как полноширинный и включает аналоги половинной ширины в строке 11; [1] Стандарт GB 18030 этого не делает.
GB 5007.1-85 Набор растровых шрифтов китайского языка 24×24 для обмена информацией ( китайский :信息交换用汉字 24x24 点阵字模集) — это самый ранний шаблон шрифта, основанный на GB/T 2312, в который включены исправления и расширения, в том числе:
В GB/T 2312 исправлений не было, но эти исправления включены в шаблоны шрифтов, основанные на GB/T 2312, включая GB/T 12345; его надмножества GBK и GB 18030 также включали эти исправления. GB/T 2312 также используется в ISO-IR-165 .
набор обеспечивает более 99,99 процентов всех случаев использования. Тем не менее, дизайнеры сочли необходимым добавить 14 276 символов «специального использования» для покрытия непредвиденных обстоятельств!