stringtranslate.com

ИСО/МЭК 2022

ISO/IEC 2022 Информационные технологии. Структура кода символов и методы расширения — это стандарт ISO / IEC в области кодирования символов . Он эквивалентен стандарту ECMA ECMA-35 , [1] [2], стандарту ANSI ANSI X3.41 [3] и японскому промышленному стандарту JIS X 0202 . Созданный в 1971 году, последний раз он был пересмотрен в 1994 году. [4]

ISO 2022 определяет общую структуру, которой могут соответствовать кодировки символов, выделяя определенные диапазоны байтов ( 0x00–1F и 0x7F–9F), которые будут использоваться для непечатаемых управляющих кодов [5] для форматирования и внутриполосных инструкций (таких как разрывы строк или инструкции по форматированию для текстовых терминалов ), а не графические символы . Он также определяет синтаксис escape-последовательностей, многобайтовых последовательностей, начинающихся с управляющего кода ESC , которые также могут использоваться для внутриполосных инструкций. [6] Конкретные наборы управляющих кодов и escape-последовательностей, разработанные для использования с ISO 2022, включают ISO/IEC 6429 , части которого реализованы с помощью ANSI.SYS и эмуляторов терминала .

Сам ISO 2022 также определяет конкретные управляющие коды и escape-последовательности, которые можно использовать для переключения между различными наборами кодированных символов (например, между ASCII и японским JIS X 0208 ), чтобы использовать несколько кодов в одном документе, [7] эффективно комбинируя их в единую кодировку с сохранением состояния (функция, менее важная с появлением Unicode ). Он предназначен для использования как в 8-битных, так и в 7-битных средах (в тех, где в байте можно использовать только семь бит, например электронная почта без 8BITMIME ). [8]

Кодировки и соответствие

Набор символов ASCII поддерживает базовый латинский алфавит ISO (эквивалент английского алфавита ) и не обеспечивает хорошей поддержки языков, в которых используются дополнительные буквы или вообще используется другая система письма . Другие системы письма с относительно небольшим количеством символов, такие как греческая , кириллица , арабский или иврит , а также формы латинского алфавита с использованием диакритических знаков или букв, отсутствующих в базовом латинском алфавите ISO, исторически были представлены на персональных компьютерах с различными 8- битными , однобайтовые , расширенные кодировки ASCII, которые следуют за ASCII, когда старший бит равен 0 (т. е. байты 0x00–7F, если они представлены в шестнадцатеричном формате ), и включают дополнительные символы для старшего бита 1 (т. е. байты 0x80–FF). Некоторые из них, такие как серия ISO 8859 , соответствуют ISO 2022, [9] [10] , тогда как другие, такие как кодовая страница DOS 437 , не соответствуют, обычно из-за того, что байты 0x80–9F не зарезервированы для управляющих кодов.

Некоторые восточноазиатские языки, в частности китайский , японский и корейский (совместно « CJK »), записываются с использованием гораздо большего количества символов, чем максимум в 256, которые могут быть представлены в одном байте, и впервые были представлены на компьютерах с помощью специфичного для языка двойного байта. -байтовые кодировки или кодировки переменной ширины ; некоторые из них (например, кодировка упрощенного китайского языка GB 2312 ) соответствуют ISO 2022 , а другие (например, кодировка традиционного китайского языка Big5 ) — нет. Коды управления в ISO 2022 всегда представляются одним байтом, независимо от количества байтов, используемых для графических символов. Кодировкам CJK, используемым в 7-битных средах, использующих механизмы ISO 2022 для переключения между наборами символов, часто присваиваются имена, начинающиеся с «ISO-2022-», особенно ISO-2022-JP, хотя некоторые другие кодировки CJK, такие как EUC-JP, также использовать механизмы ISO 2022. [11] [12]

Поскольку первые 256 кодовых точек Unicode были взяты из ISO 8859-1 , Unicode наследует концепцию управляющих кодов C0 и C1 из ISO 2022, хотя помимо управляющих кодов ISO 2022 добавляет и другие непечатаемые символы . Однако форматы преобразования Unicode , такие как UTF-8, обычно по-разному отличаются от структуры ISO 2022, в том числе:

Однако существуют escape-последовательности ISO 2022 для переключения на UTF-8 и обратно как «система кодирования, отличная от системы ISO 2022» [13] , которая поддерживается некоторыми эмуляторами терминала , такими как xterm . [14]

Обзор

Элементы

ISO/IEC 2022 определяет следующее:

Версии кода

Конкретная реализация не обязательно должна реализовывать весь стандарт; уровень соответствия и поддерживаемые наборы символов определяются реализацией. Хотя многие механизмы, определенные стандартом ISO/IEC 2022, используются нечасто, несколько установленных кодировок основаны на подмножестве системы ISO/IEC 2022. [19] В частности, 7-битные системы кодирования, использующие механизмы ISO/IEC 2022, включают ISO-2022-JP (или кодировку JIS ), которая в основном используется в электронной почте на японском языке . 8-битные системы кодирования, соответствующие ISO/IEC 2022, включают ISO/IEC 4873 (ECMA-43), который, в свою очередь, соответствует ISO/IEC 8859 , [9] [10] и расширенный код Unix , который используется для East Азиатские языки. [11] Более специализированные приложения ISO 2022 включают систему кодирования MARC-8 , используемую в библиотечных записях MARC 21 . [3]

Обозначение escape-последовательностей

Escape-последовательности для переключения на определенные наборы символов или кодировки регистрируются в реестре ISO-IR (за исключением тех, которые предназначены для частного использования, значения которых определяются поставщиками или спецификациями протокола, такими как ARIB STD-B24 ) и следовать шаблонам, определенным в стандарте. Кодировки символов, использующие эти escape-последовательности, требуют последовательной обработки данных в прямом направлении, поскольку правильная интерпретация данных зависит от ранее встречавшихся escape-последовательностей.

Определенные профили, такие как ISO-2022-JP, могут налагать дополнительные условия, например, что текущий набор символов сбрасывается на US-ASCII перед концом строки. Кроме того, escape-последовательности, объявляющие наборы национальных символов, могут отсутствовать, если конкретная кодировка на основе ISO-2022 разрешает или требует этого и требует использования определенных наборов национальных символов. Например, ISO-8859-1 утверждает, что определение escape-последовательности не требуется.

Многобайтовые символы

Для представления больших наборов символов ISO/IEC 2022 основывается на свойстве ISO/IEC 646 , согласно которому семибитное представление символов обычно может представлять 94 графических (печатных) символа (помимо пробела и 33 управляющих символов); если исключены только управляющие коды C0 (узко определенные), их можно расширить до 96 символов. Таким образом, используя два байта, можно представить до 8836 (94×94) символов; и, используя три байта, до 830 584 (94×94×94) символов. Хотя стандарт определяет это, ни один зарегистрированный набор символов не использует три байта (хотя незарегистрированный G2 EUC-TW использует это, как и аналогично незарегистрированный CCCII ).

Для двухбайтовых наборов символов кодовая точка каждого символа обычно указывается в так называемой форме строки-ячейки или кутен [a] , которая состоит из двух чисел от 1 до 94 включительно, определяющих строку [b] и ячейку [. c] этого персонажа в зоне. Для трехбайтового набора в начале добавляется дополнительный номер плоскости [d] . [20] Escape-последовательности не только объявляют, какой набор символов используется, но также является ли этот набор однобайтовым или многобайтовым (но не сколько байтов он использует, если он многобайтовый), а также является ли каждый из них байт имеет 94 или 96 разрешенных значений.

Структура кода

Обозначения и номенклатура

Кодирование ISO/IEC 2022 определяет двухуровневое сопоставление между кодами символов и отображаемыми символами. Escape-последовательности позволяют «обозначить» любой из большого реестра наборов графических символов [21] в один из четырех рабочих наборов, называемых от G0 до G3, а более короткие управляющие последовательности определяют рабочий набор, который «вызывается» [22] для интерпретации . байт в потоке.

Значения байтов кодирования («битовые комбинации») часто задаются в виде строк столбцов , где два десятичных числа в диапазоне 00–15 (каждое соответствует одной шестнадцатеричной цифре) разделены косой чертой. [23] Следовательно, например, коды с 2/0 (0x20) по 2/15 (0x2F) включительно могут называться «столбцом 02». Это обозначение, используемое в самом стандарте ISO/IEC 2022/ECMA-35. [24] Они могут быть описаны в другом месте с использованием шестнадцатеричного значения , как это часто используется в этой статье, или с использованием соответствующих символов ASCII, [25] хотя escape-последовательности фактически определяются в терминах байтовых значений и графики, присвоенной этому байтовому значению. могут быть изменены, не затрагивая последовательность управления.

Значения байтов из 7-битного графического диапазона ASCII (шестнадцатеричные 0x20–0x7F), находящиеся в левой части таблицы кодов символов, называются кодами «GL» (где «GL» означает «оставшаяся графика»), а байты из диапазона «высокого ASCII» (0xA0–0xFF), если он доступен (т. е. в 8-битной среде), называются кодами «GR» («графическое право») . [5] Термины «CL» (0x00–0x1F) и «CR» (0x80–0x9F) определены для диапазонов управления, но диапазон CL всегда вызывает основные элементы управления (C0), тогда как диапазон CR всегда либо вызывает вторичный (C1) контролирует или не используется. [5]

Фиксированные кодированные символы

Символ удаления DEL (0x7F), escape-символ ESC (0x1B) и символ пробела SP (0x20) обозначаются как «фиксированные» кодированные символы [26] и всегда доступны при вызове G0 через GL, независимо от того, какие наборы символов используются. назначен. Они не могут быть включены в наборы графических символов, хотя символы других размеров или типов пробелов могут быть включены. [27]

Общий синтаксис escape-последовательностей

Последовательности, использующие символ ESC (escape), принимают форму , где за символом ESC следует ноль или более промежуточных байтов [28] ( I ) из диапазона 0x20–0x2F и один последний байт [29] ( F ) из диапазона 0x30–0x7E. [30]ESC [I...] F

Первый I- байт или его отсутствие определяет тип escape-последовательности; оно может, например, обозначать рабочий набор или обозначать одну функцию управления. Во всех типах escape-последовательностей F -байты в диапазоне 0x30–0x3F зарезервированы для незарегистрированного частного использования, определенного по предварительному соглашению между сторонами. [31]

Функции управления из некоторых наборов могут использовать дополнительные байты, следующие за управляющей последовательностью. Например, за функцией управления ISO 6429 « Вводитель управляющей последовательности », которую можно представить с помощью escape-последовательности, следует ноль или более байтов в диапазоне 0x30–0x3F, затем ноль или более байтов в диапазоне 0x20–0x2F, затем одним байтом в диапазоне 0x40–0x7E, причем вся последовательность называется «управляющей последовательностью». [32]

Наборы графических символов

Каждый из четырех рабочих наборов G0–G3 может представлять собой набор из 94 символов или многобайтовый набор из 94 n символов . Кроме того, G1-G3 может представлять собой набор из 96 или 96 n символов.

В наборе из 96 или 96 n символов байты от 0x20 до 0x7F при вызове GL или от 0xA0 до 0xFF при вызове GR выделяются и могут использоваться набором. В наборе символов из 94 или 94 n байты 0x20 и 0x7F не используются. [33] Когда в регионе GL вызывается набор из 96 или 96 n символов, символы пробела и удаления (коды 0x20 и 0x7F) недоступны до тех пор, пока не будет установлен набор из 94 или 94 n символов (например, набор G0). ) вызывается в GL. [5] Наборы из 96 символов не могут быть назначены G0.

Регистрация набора как набора из 96 символов не обязательно означает, что байты 0x20/A0 и 0x7F/FF фактически назначаются набором; некоторые примеры наборов графических символов, которые зарегистрированы как 96-наборы, но не используют эти байты, включают набор G1 из IS 434 , [34] набор чертежей рамки из ISO/IEC 10367 , [35] и ISO-IR-164 ( подмножество набора G1 ISO-8859-8 , содержащее только буквы, используемые CCITT ). [36]

Объединение персонажей

Ожидается, что символы будут пробелами, а не объединяющими символами, если иное не указано в рассматриваемом графическом наборе. [37] ISO 2022/ECMA-35 также признает использование управляющих символов возврата и возврата каретки в качестве средства комбинирования символов, разделенных иначе, а также последовательности CSI «Комбинация графических символов» (GCC) [37] ( CSI 0x20 (SP) 0x5F (_)). [38]

Использование возврата каретки и возврата каретки таким образом разрешено ISO/IEC 646 , но запрещено ISO/IEC 4873 /ECMA-43 [39] и ISO/IEC 8859 , [40] [41] на том основании, что оно оставляет репертуар графических персонажей не определен. Однако ISO/IEC 4873/ECMA-43 разрешает использование функции GCC при условии, что последовательность символов сохраняется прежней и просто отображается в одном месте, а не перепечатывается для формирования символа с другим значением. . [42]

Наборы управляющих символов

Наборы управляющих символов классифицируются как «первичные» или «вторичные» наборы управляющих кодов, [43] соответственно также называемые наборами управляющих кодов «C0» и «C1». [44]

Набор элементов управления C0 должен содержать управляющий символ ESC (escape) по адресу 0x1B [45] (набор C0, содержащий только ESC, регистрируется как ISO-IR-104), [46] тогда как набор элементов управления C1 вообще не может содержать элемент управления escape. . [33] Следовательно, это совершенно отдельные регистрации: набор C0 является только набором C0, а набор C1 является только набором C1. [44]

Если коды из набора C0 ISO 6429/ECMA-48, т. е. управляющие коды ASCII , появляются в наборе C0, они должны появиться в своих местоположениях ISO 6429/ECMA-48. [45] Включение символов управления передачей в набор C0, помимо десяти, включенных в ISO 6429/ECMA-48 (а именно SOH, STX, ETX, EOT, ENQ, ACK, DLE, NAK, SYN и ETB), [47 ] или включение любого из этих десяти в набор C1 также запрещено стандартом ISO/IEC 2022/ECMA-35. [45] [33]

Набор управления C0 вызывается в диапазоне CL от 0x00 до 0x1F, [48] тогда как функция управления C1 может быть вызвана в диапазоне CR от 0x80 до 0x9F (в 8-битной среде) или с использованием escape-последовательностей (в 7-битной среде). битная или 8-битная среда), [43] , но не то и другое одновременно. Какой стиль вызова C1 используется, должен быть указан в определении версии кода. [49] Например, ISO/IEC 4873 определяет байты CR для элементов управления C1, которые он использует (SS2 и SS3). [50] При необходимости о том, какой вызов используется, можно сообщить с использованием последовательностей диктора.

В последнем случае отдельные функции управления из набора кодов управления C1 вызываются с использованием escape-последовательностей типа Fe, [33] означающих те, в которых за управляющим символом ESC следует байт из столбцов 04 или 05 (то есть, ESC 0x40 (@)через ESC 0x5F (_)). [51]

Другие функции управления

Дополнительные функции управления назначаются escape-последовательностям типа Fs (в диапазоне ESC 0x60 (`)до ESC 0x7E (~)); они имеют постоянно присвоенные значения, а не зависят от обозначений C0 или C1. [51] [52] Регистрация функций управления для последовательностей типа «Fs» должна быть одобрена ISO/IEC JTC 1/SC 2 . [52] Другие одиночные функции управления могут быть зарегистрированы для escape-последовательностей типа «3Ft» (в диапазоне от ), [53] хотя в настоящее время последовательности «3Ft» не назначены (по состоянию на 2019 г.). [54] Некоторые из них указаны в ECMA-35 (ISO 2022/ANSI X3.41), другие – в ECMA-48 (ISO 6429/ANSI X3.64). [55] ECMA-48 называет их «независимыми функциями управления». [56]ESC 0x23 (#) [I...] 0x40 (@)ESC 0x23 (#) [I...] 0x7E (~)

Escape-последовательности типа «Fp» ( ESC 0x30 (0)через ESC 0x3F (?)) или типа «3Fp» ( через ) зарезервированы для одиночных управляющих кодов частного использования по предварительному соглашению между сторонами. [58] Несколько таких последовательностей обоих типов используются терминалами DEC , такими как VT100 , и, таким образом, поддерживаются эмуляторами терминалов . [14]ESC 0x23 (#) [I...] 0x30 (0)ESC 0x23 (#) [I...] 0x3F (?)

Функции сдвига

По умолчанию коды GL обозначают символы G0, а коды GR (там, где они доступны) указывают символы G1; иное может быть указано по предварительному соглашению. Набор, вызываемый для каждой области, также может быть изменен с помощью управляющих кодов, называемых сдвигами, как показано в таблице ниже. [59]

8-битный код может иметь коды GR, определяющие символы G1, т.е. с соответствующим 7-битным кодом, использующим Shift In и Shift Out для переключения между наборами (например, JIS X 0201 ), [60] хотя некоторые вместо этого имеют коды GR, определяющие G2. символы с соответствующим 7-битным кодом, использующим односменный код для доступа ко второму набору (например, T.51 ). [61]

Коды, показанные в таблице ниже, являются наиболее распространенными кодировками этих кодов управления, соответствующими стандарту ISO/IEC 6429 . Сдвиги LS2, LS3, LS1R, LS2R и LS3R регистрируются как отдельные функции управления и всегда кодируются как управляющие последовательности, перечисленные ниже, [54] , тогда как остальные являются частью набора управляющих кодов C0 или C1 (как показано ниже, SI (LS0) и SO (LS1) — элементы управления C0, а SS2 и SS3 — элементы управления C1), что означает, что их кодирование и доступность могут различаться в зависимости от того, какие наборы элементов управления назначены: они должны присутствовать в назначенных наборах элементов управления, если их функциональность используется. . [48] ​​[49] Сами элементы управления C1, как упоминалось выше, могут быть представлены с помощью escape-последовательностей или 8-битных байтов, но не того и другого.

Альтернативные кодировки односменных кодов управления C0 доступны в определенных наборах управляющих кодов. Например, SS2 и SS3 обычно доступны по адресам 0x19 и 0x1D соответственно в T.51 [61] и T.61 . [62] В настоящее время это кодирование рекомендуется ISO/IEC 2022/ECMA-35 для приложений, требующих 7-битных однобайтовых представлений SS2 и SS3, [63] и может также использоваться только для SS2, [64] хотя более старый код наборы с SS2 по адресу 0x1C также существуют, [65] [66] [67] и упоминались как таковые в более ранней редакции стандарта. [68] Кодирование одиночных смен 0x8E и 0x8F, как показано ниже, является обязательным для уровней 2 и 3 ISO/IEC 4873. [69]

Хотя официально односменные коды считаются кодами сдвига и называются соответственно, они не всегда рассматриваются как сдвиги [12] и могут просто рассматриваться как префиксные байты (т.е. первые байты в многобайтовой последовательности), [11] поскольку они не требуют, чтобы кодер сохранял текущий активный набор как состояние , в отличие от блокировки кодов сдвига. В 8-битных средах в качестве области с одной сменой можно использовать либо GL, либо GR, но не оба одновременно. Это должно быть указано в определении версии кода. [72] Например, стандарт ISO/IEC 4873 определяет GL, тогда как упакованный EUC определяет GR. В 7-битных средах в качестве односменной области используется только GL. [74] [75] При необходимости о том, какая односменная зона используется, можно сообщить с помощью последовательностей дикторов.

Имена «блокировка смещения нуля» (LS0) и «блокировка смещения единицы» (LS1) относятся к той же паре управляющих символов C0 (0x0F и 0x0E), что и имена «смещение внутрь» (SI) и «смещение наружу» (SO ). Однако стандарт называет их LS0 и LS1, когда они используются в 8-битных средах, и как SI и SO, когда они используются в 7-битных средах. [59]

Стандарт ISO/IEC 2022/ECMA-35 разрешает, но не рекомендует использовать G1, G2 или G3 одновременно в GL и GR. [76]

Регистрация наборов графических и управляющих кодов

В Международном реестре наборов кодированных символов, которые будут использоваться с escape-последовательностями (ISO-IR), в Международном реестре ISO перечислены наборы графических символов, наборы управляющих кодов, отдельные управляющие коды и т. д., которые были зарегистрированы для использования в стандарте ISO/IEC 2022. Процедура регистрации коды и наборы с реестром ISO-IR определены стандартом ISO/IEC 2375 . Каждая регистрация получает уникальную escape-последовательность и уникальный номер записи реестра для ее идентификации. [77] [78] Например, набор символов CCITT для упрощенного китайского языка известен как ISO-IR-165 .

Регистрация наборов кодированных символов в реестре ISO-IR идентифицирует документы, определяющие набор символов или функцию управления, связанную с escape-последовательностью нечастного использования ISO/IEC 2022. Это может быть стандартный документ; однако регистрация не создает новый стандарт ISO, не обязывает ISO или IEC принимать его в качестве международного стандарта и не обязывает ISO или IEC добавлять какие-либо символы в универсальный набор кодированных символов . [79]

Зарегистрированные в ISO-IR escape-последовательности также используются, инкапсулированные в формальный общедоступный идентификатор, для идентификации наборов символов, используемых для числовых ссылок на символы в SGML (ISO 8879). Например, строка ISO 646-1983//CHARSET International Reference Version (IRV)//ESC 2/5 4/0может использоваться для идентификации международной справочной версии ISO 646-1983 , [80] , а спецификация HTML 4.01 используется ISO Registration Number 177//CHARSET ISO/IEC 10646-1:1993 UCS-4 with implementation level 3//ESC 2/5 2/15 4/6для идентификации Unicode. [81] Текстовое представление escape-последовательности, включенное в третий элемент FPI, будет распознаваться реализациями SGML для поддерживаемых наборов символов. [80]

Обозначения наборов символов

Escape-последовательности для обозначения наборов символов принимают форму . Как упоминалось выше, промежуточные ( I ) байты находятся в диапазоне 0x20–0x2F, а последний ( F ) байт — в диапазоне 0x30–0x7E. Первый байт I (или, для многобайтового набора, первые два) идентифицирует тип набора символов и рабочий набор, которому он должен быть назначен, тогда как байт F (и любые дополнительные байты I ) идентифицируют набор символов. сам по себе, как назначено в реестре ISO-IR (или, для escape-последовательностей частного использования, по предварительному соглашению).ESC I [I...] F

Дополнительные байты I могут быть добавлены перед байтом F , чтобы расширить диапазон байтов F. В настоящее время это используется только с наборами из 94 символов, которым были назначены коды формы . [82] С другой стороны, никаких многобайтовых 96-множеств не зарегистрировано, поэтому приведенные ниже последовательности являются строго теоретическими.ESC ( ! F

Как и в случае с другими типами escape-последовательностей, диапазон 0x30–0x3F зарезервирован для F - байтов частного использования, [31] в данном случае для определений наборов символов частного использования (которые могут включать незарегистрированные наборы, определенные такими протоколами, как ARIB STD-B24 [31 ]) . 83] или MARC-8 , [3] или наборы, зависящие от поставщика, такие как DEC Special Graphics ). [84] Однако в последовательности графического обозначения набора, если второй байт I (для однобайтового набора) или третий байт I (для двухбайтового набора) равен 0x20 (пробел), обозначаемый набор представляет собой " динамически переопределяемый набор символов » (DRCS), определенный по предварительному соглашению [85] , который также считается частным использованием. [31] Графический набор, рассматриваемый как DRCS, подразумевает, что он представляет собой шрифт, состоящий из точных глифов, а не набора абстрактных символов. [86] Способ передачи, выделения и управления наборами DRCS и связанными с ними шрифтами не предусмотрен самим стандартом ISO/IEC 2022/ECMA-35, хотя он рекомендует выделять их последовательно, начиная с F- байта 0x40 ( @); [87] однако способ передачи шрифтов DRCS определен в некоторых телекоммуникационных протоколах, таких как World System Teletext . [88]

Есть также три особых случая для многобайтовых кодов. Все кодовые последовательности ESC $ @, ESC $ Aи ESC $ Bбыли зарегистрированы, когда современная версия стандарта допускала многобайтовые наборы только в G0, поэтому их следует принимать вместо последовательностей ESC $ ( @до ESC $ ( Bдля обозначения набора символов G0. [89]

Существуют дополнительные (редко используемые) функции для переключения наборов управляющих символов, но это одноуровневый поиск, в котором (как отмечалось выше) набор C0 всегда вызывается через CL, а набор C1 всегда вызывается через CR или через используя escape-коды. Как отмечалось выше, необходимо, чтобы любой набор символов C0 включал символ ESC в позиции 0x1B, чтобы были возможны дальнейшие изменения. Последовательности обозначения набора элементов управления (в отличие от графических наборов) также могут использоваться из ISO/IEC 10646 (UCS/Unicode) в контекстах, где уместна обработка escape-кодов ANSI , при условии, что каждый байт в последовательности дополняется до размер кодовой единицы кодирования. [90]

Ниже приведена таблица управляющих последовательностей I байтов и обозначение или другая функция, которую они выполняют. [91]

Обратите внимание, что реестр F -байтов независим для разных типов. Набор графических символов из 94 символов, обозначаемый через, ESC ( Aникак ESC + Aне связан с набором из 96 символов, обозначаемым ESC - Aчерез ESC / A. И ни один из них не имеет отношения к набору из 94 n символов, обозначенному ESC $ ( Aчерез ESC $ + Aи так далее; последние байты должны интерпретироваться в контексте. (Действительно, без каких-либо промежуточных байтов ESC Aэто способ указать управляющий код C1 0x81.)

Также обратите внимание, что наборы управляющих символов C0 и C1 независимы; набор управляющих символов C0, обозначенный ESC ! A(который является набором управления NATS для передачи газетного текста), не совпадает с набором управляющих символов C1, обозначенным ESC " A( набором управления атрибутом CCITT для Videotex ).

Взаимодействие с другими системами кодирования

Стандарт также определяет способ определения систем кодирования, которые не соответствуют его собственной структуре.

Также определена последовательность возврата к ISO/IEC 2022; регистрации, которые поддерживают эту последовательность, закодированную в ISO/IEC 2022, включают (по состоянию на 2019 год) различные форматы Videotex , UTF-8 и UTF-1 . [99] Второй I- байт 0x2F ( /) включен в последовательности обозначений кодов, которые не используют эту последовательность байтов для возврата к ISO 2022; у них могут быть свои собственные средства для возврата к ISO 2022 (например, другая или дополненная последовательность) или вообще никаких средств. [100] Все существующие регистрации последнего типа (по состоянию на 2019 год) представляют собой либо прозрачные необработанные данные, форматы Unicode/UCS , либо их подмножества. [101]

Особый интерес представляют последовательности, которые переключаются на форматы ISO/IEC 10646 ( Unicode ), которые не соответствуют структуре ISO/IEC 2022. К ним относятся UTF-8 (которая не резервирует диапазон 0x80–0x9F для управляющих символов), ее предшественница UTF-1 (которая смешивает байты GR и GL в многобайтовых кодах), а также UTF-16 и UTF-32 (которые используют более широкие единицы кодирования). [99] [101]

Также было зарегистрировано несколько кодов для подмножеств (уровни 1 и 2) UTF-8, UTF-16 и UTF-32, а также для трёх уровней UCS-2 . [101] Однако единственными кодами, указанными в настоящее время в ISO/IEC 10646, являются коды уровня 3 для UTF-8, UTF-16 и UTF-32 и код неопределенного уровня для UTF-8, а остальные перечислены как устарел. [103] ISO/IEC 10646 предусматривает, что форматы UTF-16 и UTF-32 с обратным порядком байтов обозначаются их escape-последовательностями. [104]

Из последовательностей, переключающихся на UTF-8, ESC % Gподдерживается, например, xterm . [14]

Хотя использование варианта стандартной возвращаемой последовательности из UTF-16 и UTF-32 разрешено, байты escape-последовательности должны быть дополнены до размера кодовой единицы кодировки (т.е. 001B 0025 0040для UTF-16), т.е. кодирование стандартной возвращаемой последовательности не совсем соответствует ISO/IEC 2022. По этой причине в обозначениях UTF-16 и UTF-32 используется синтаксис без стандартного возврата. [107]

Для указания кодировок с помощью меток формат Compound Text Консорциума X определяет пять последовательностей DOCS для частного использования. [108]

Объявления о структуре кода

Последовательность «объявление структуры кода» ( ) используется для объявления конкретной структуры кода или определенной группы средств ISO 2022, которые используются в конкретной версии кода. Хотя объявления можно комбинировать, некоторые противоречивые комбинации (в частности, использование объявлений 16–23 о блокировке смены с объявлениями 1, 3 и 4) запрещены стандартом, как и использование дополнительных объявлений поверх объявлений 12–14 уровня ISO/IEC 4873. [92] (в которых полностью указаны допустимые конструктивные особенности). Последовательность объявлений следующая:ESC SP (0x20) F

Версии кода ISO/IEC 2022

(Скриншот старой версии Firefox, показывающий Big5, GB 2312, GBK, GB 18030, HZ, ISO-2022-CN, Big5-HKSCS, EUC-TW, EUC-JP, ISO-2022-JP, Shift_JIS, EUC- KR, UHC, Johab и ISO-2022-KR в качестве доступных кодировок в подменю CJK.)
Различные кодировки ISO 2022 и другие CJK , поддерживаемые Mozilla Firefox с 2004 года. (Эта поддержка была сокращена в более поздних версиях, чтобы избежать определенных атак с использованием межсайтовых сценариев .)

Шесть 7-битных версий кода ISO 2022 (ISO-2022-CN, ISO-2022-CN-EXT, ISO-2022-JP, ISO-2022-JP-1, ISO-2022-JP-2 и ISO-2022-KR ) определяются документами IETF RFC , из которых в прошлом широко использовались ISO-2022-JP и ISO-2022-KR. [109] Ряд других вариантов определен поставщиками, включая IBM . [110] Хотя UTF-8 является предпочтительной кодировкой в ​​HTML5 , устаревший контент в ISO-2022-JP остается достаточно распространенным, поэтому стандарт кодирования WHATWG сохраняет его поддержку, [111] в отличие от сопоставления ISO-2022-KR, ISO- 2022-CN и ISO-2022-CN-EXT [112] полностью на заменяющий символ , [113] из-за опасений по поводу атак путем внедрения кода , таких как межсайтовый скриптинг . [111] [113]

Версии 8-битного кода включают расширенный код Unix . [11] [12] Кодировки ISO/IEC 8859 также соответствуют ISO 2022 в подмножестве, предусмотренном ISO/IEC 4873. [9] [10]

Японские версии электронной почты

ISO-2022-JP

ISO-2022-JP — широко используемая кодировка японского языка, особенно вэлектронной почте. Он был введен для использования в сети JUNET и позже кодифицирован вIETF RFC1468 от 1993 года.[114]Он имеет преимущество перед другимикодировками для японского языка, поскольку не требует8-битной чистойпередачи. Microsoft называет этокодовой страницей 50220. [115]Он начинается в ASCII и включает следующие escape-последовательности:

Использование двух символов, добавленных в JIS X 0208-1990, разрешено, но без включения последовательности IRR, т. е. с использованием той же escape-последовательности, что и в JIS X 0208-1983. [114] Кроме того, из-за регистрации до того, как стало возможным назначение многобайтовых наборов, кроме G0, escape-последовательности для JIS X 0208 не включают второй I -байт (. [89]

В RFC отмечается, что некоторые существующие системы не отличались ESC ( Bот ESC ( J, или не отличались ESC $ @от ESC $ B, но оговаривается, что escape-последовательности не должны изменяться системами, просто ретранслирующими сообщения, например электронные письма. [114] Стандарт кодирования WHATWG , на который ссылается HTML5 , обрабатывает ESC ( Bи ESC ( Jразделяет, но обрабатывает ESC $ @то же самое, что и ESC $ Bпри декодировании, и использует только ESC $ Bдля JIS X 0208 при кодировании. [116] RFC также отмечает, что некоторые предыдущие системы ошибочно использовали последовательность ESC ( Hдля переключения с JIS X 0208, который фактически зарегистрирован для ISO-IR-11 (шведский вариант ISO 646 и World System Teletext ). [114] [я]

Версии с катаканой половинной ширины

Использование для ESC ( Iпереключения на набор кана JIS X 0201-1976 (1 байт на символ) не является частью профиля ISO-2022-JP [114] , но также иногда используется. Python допускает это в варианте, который он обозначает ISO-2022-JP-EXT (который также включает JIS X 0212, как описано ниже, завершая покрытие EUC-JP ); [117] [118] По названию и структуре это близко к кодировке, обозначенной DEC ISO -2022-JPext , которая, кроме того, добавляет двухбайтовую определяемую пользователем область , доступ к которой осуществляется с помощью для завершения покрытия Super DEC Kanji . [119] Вариант WHATWG/HTML5 позволяет декодировать катакану JIS X 0201 во входных данных ISO-2022-JP, но при кодировании преобразует символы в их эквиваленты JIS X 0208. [116] Кодовая страница Microsoft для ISO-2022-JP с дополнительно разрешенным кана JIS X 0201 — кодовая страница 50221 . [115]ESC $ ( 0

Другие, более старые варианты, известные как JIS7 ​​и JIS8 , основаны непосредственно на 7-битных и 8-битных кодировках, определенных JIS X 0201 , и позволяют использовать кану JIS X 0201 из G1 без escape-последовательностей, используя Shift Out и Shift In или устанавливая восьмую бит (вызываемый GR) соответственно. [120] Они не получили широкого распространения; [120] Поддержка JIS X 0208 в расширенном 8-битном JIS X 0201 чаще всего достигается с помощью Shift JIS . Кодовая страница Microsoft для ISO 2022 на основе JIS X 0201 с однобайтовой катаканой через Shift Out и Shift In — кодовая страница 50222 . [115]

ISO-2022-JP-2

ISO-2022-JP-2 — это многоязычное расширение ISO-2022-JP, определенное в RFC 1554 (от 1993 г.), которое допускает следующие escape-последовательности в дополнение к последовательностям ISO-2022-JP. ЧастиISO/IEC 8859представляют собой наборы из 96 символов, которые не могут быть обозначены как G0, и доступны из G2 с использованием 7-битной escape-последовательности односменного кода SS2:[121]

ISO-2022-JP с представлением ISO-2022-JP-2 для JIS X 0212, но не с другими расширениями, впоследствии был назван ISO-2022-JP-1 в RFC 2237 от 1997 года. [122]

IBM японский TCP

IBM реализует девять 7-битных кодировок японского языка на основе ISO 2022, каждая из которых использует свой набор escape-последовательностей: IBM-956, IBM-957, IBM-958, IBM-959, IBM-5052, IBM-5053, IBM-5054, IBM-5055 и ISO-2022-JP, которые вместе называются «наборами японских кодированных символов TCP/IP». [123] CCSID 9148 — это стандарт (RFC 1468) ISO-2022-JP. [124]

ДЖИС Х 0213

Стандарт JIS X 0213 , впервые опубликованный в 2000 году, определяет обновленную версию ISO-2022-JP без расширений ISO-2022-JP-2, получившую название ISO-2022-JP-3 . Дополнения, внесенные в JIS X 0213 по сравнению с базовым стандартом JIS X 0208, привели к новой регистрации расширенной плоскости JIS 1, а новая плоскость 2 получила собственную регистрацию. Дальнейшие дополнения к плоскости 1 в редакции стандарта 2004 года привели к добавлению дополнительной регистрации к дальнейшей версии профиля, получившей название ISO-2022-JP-2004 . Помимо основных кодов обозначений ISO-2022-JP, признаются следующие обозначения:

Другие 7-битные версии

ISO-2022-KR определен в RFC 1557 от 1993 года.[133]Он кодирует ASCII и корейский двухбайтовый кодKS X 1001-1992,[134][135],ранее называвшийся KS C 5601-1987. В отличие от ISO-2022-JP-2, он используетсимволы Shift Out и Shift Inдля переключения между ними послеESC $ ) Cодного включения в начале строки для обозначения KS X 1001 на G1. [133]

ISO-2022-CN иISO-2022-CN-EXTопределены в RFC 1922, датированном 1996 годом. Это 7-битные кодировки, использующие как функции Shift Out, так и Shift In (для переключения между G0 и G1), а также 7-битный escape-код формирует односменные функции SS2 и SS3 (для доступа к G2 и G3). [136]Они поддерживают наборы символовGB 2312(дляупрощенного китайского языка) иCNS 11643(длятрадиционного китайского языка).

Базовый профиль ISO-2022-CN использует ASCII в качестве набора G0 (сдвиг), а также включает GB 2312 и первые две плоскости CNS 11643 (поскольку этих двух плоскостей достаточно для представления всех традиционных китайских иероглифов из обычных Big5 , к которому RFC приводит соответствие в приложении): [136]

Профиль ISO-2022-CN-EXT допускает следующие дополнительные наборы и плоскости. [136]

В профиле ISO-2022-CN-EXT дополнительные стандартные графические наборы Guobiao перечислены как разрешенные, но при условии, что им будут присвоены зарегистрированные escape-последовательности ISO 2022: [136]

Символ после ESC(для однобайтовых наборов символов) или ESC $(для многобайтовых наборов символов) указывает тип набора символов и рабочий набор, которому назначен. В приведенных выше примерах символ ((0x28) обозначает набор из 94 символов набора символов G0, тогда как )или *( +0x29–0x2B) обозначает наборы символов G1–G3.

ISO-2022-KR и ISO-2022-CN используются реже, чем ISO-2022-JP, и иногда намеренно не поддерживаются из соображений безопасности. Примечательно, что стандарт кодирования WHATWG , используемый HTML5 , сопоставляет ISO-2022-KR, ISO-2022-CN и ISO-2022-CN-EXT (а также HZ-GB-2312 ) с «замещающим» декодером, [112] который сопоставляет все входные данные с символом замены (�), чтобы предотвратить определенные межсайтовые сценарии и связанные с ними атаки, которые используют разницу в поддержке кодирования между клиентом и сервером. [113] Хотя та же проблема безопасности (позволяющая по-разному интерпретировать последовательности байтов ASCII) также применима к ISO-2022-JP и UTF-16 , они не могут быть обработаны таким образом из-за того, что они гораздо чаще используются в развернутом контенте. [111]

ИСО/МЭК 4873

Связь между редакциями и уровнями ECMA-43 (ISO/IEC 4873) и EUC.

Подмножество ISO 2022, применяемое к 8-битным однобайтовым кодировкам, определяется стандартом ISO/IEC 4873 , также опубликованным Ecma International как ECMA-43. ISO/IEC 8859 определяет 8-битные коды для уровня 1 ISO/IEC 4873 (или ECMA-43). [9] [10]

ISO/IEC 4873/ECMA-43 определяет три уровня кодирования: [137]

Более ранние версии стандарта допускали присвоения не-ASCII в наборе G0 при условии, что инвариантные позиции ISO/IEC 646 были сохранены, что другие позиции были назначены пробельным (не объединяемым) символам, что 0x23 был назначен либо £ , либо # . , и этот 0x24 был назначен либо $ , либо ¤ . [138] Например, 8-битная кодировка JIS X 0201 совместима с более ранними редакциями. Впоследствии это было изменено, чтобы полностью определить набор ISO / IEC 646: 1991 IRV / ISO-IR № 6 (ASCII). [139] [140] [141]

Использование ISO/IEC 646 IRV (синхронизировано с ASCII с 1991 года) по ISO/IEC 4873 уровня 1 без набора C1 или G1, т.е. использование IRV в 8-битной среде, в которой не используются коды сдвига и высокий уровень бит всегда равен нулю, известен как ISO 4873 DV , где DV означает «Версия по умолчанию». [142]

В случаях, когда повторяющиеся символы доступны в разных наборах, действующая редакция ISO/IEC 4873/ECMA-43 разрешает использовать эти символы только в рабочем наборе с наименьшим номером, в котором они встречаются. [143] Например, если символ появляется в как набор G1, так и набор G3, его необходимо использовать из набора G1. Однако использование других наборов разрешено в более ранних выпусках. [141]

ISO/IEC 8859 определяет полные кодировки на уровне 1 ISO/IEC 4873 и не допускает совместного использования нескольких частей ISO/IEC 8859. Он предусматривает, что вместо этого для уровней 2 и 3 ISO/IEC 4873 следует использовать ISO/IEC 10367. [9] [10] ISO/IEC 10367:1991 включает наборы G0 и G1, соответствующие тем, которые используются в первых 9 частях ISO/ IEC 8859 (т.е. те, которые существовали по состоянию на 1991 год, когда он был опубликован), и некоторые дополнительные наборы. [144]

Escape-последовательности обозначения набора символов используются для идентификации или переключения между версиями во время обмена информацией только в том случае, если этого требует дополнительный протокол; в этом случае стандарт требует последовательности объявлений ISO/IEC 2022, определяющей уровень ISO/IEC 4873, за которой следует полный набор escape-символов, определяющих обозначения наборов символов для C0, C1, G0, G1, G2 и G3 соответственно (но опуская обозначения G2 и G3 для уровня 1), при этом F-байт 0x7E обозначает пустой набор. Каждый уровень ISO/IEC 4873 имеет свою собственную последовательность объявлений ISO/IEC 2022, а именно: [145]

Расширенный код Unix

Расширенный код Unix (EUC) — это 8-битная система кодирования символов переменной ширины, используемая в основном для японского , корейского и упрощенного китайского языков . Он основан на ISO 2022, и только наборы символов, соответствующие структуре ISO 2022, могут иметь формы EUC. Могут быть представлены до четырех наборов кодированных символов (в G0, G1, G2 и G3). Набор G0 вызывается через GL, набор G1 вызывается через GR, а наборы G2 и G3 (если они присутствуют) вызываются с использованием одиночных сдвигов SS2 и SS3, которые используются как байты CR (т.е. 0x8E и 0x8F соответственно) и вызывать через GR (не GL). [11] Коды блокировки блокировки не используются. [12]

Код, присвоенный набору G0, — это ASCII или национальный набор символов ISO 646 страны, например KS-Roman (KS X 1003) или JIS-Roman (нижняя половина JIS X 0201 ). [11] Следовательно, 0x5C ( обратная косая черта в US-ASCII) используется для обозначения знака иены в некоторых версиях EUC-JP и знака вона в некоторых версиях EUC-KR.

G1 используется для кодированного набора символов 94x94, представленного двумя байтами. Форма EUC-CN GB 2312 и EUC-KR являются примерами таких двухбайтовых кодов EUC. EUC-JP включает символы, представленные тремя байтами (т. е. SS3 плюс два байта), тогда как один символ в EUC-TW может занимать до четырех байтов (т. е. SS2 плюс три байта).

Сам код EUC не использует последовательности объявлений или обозначений из ISO 2022; однако это соответствует следующей последовательности из четырех последовательностей дикторов, значения которых распределяются следующим образом. [146]

Составной текст (X11)

Консорциум X определил профиль ISO 2022 под названием Compound Text в качестве формата обмена в 1989 году . _ 8-битное представление ), [148] с последовательностью SDS ( ) CSI, используемой для управления двунаправленным текстом. [149] Это 8-битный код, использующий G0 и G1 для GL и GR, и в исходном состоянии соответствует ISO-8859-1 . [150] Используются следующие F-байты:0x090x0A 0x1B0x9BCSI … ]

Для указания кодировок с помощью меток X11 Compound Text определяет пять последовательностей DOCS частного использования: ESC % / 0( 1B 25 2F 30) для кодировок переменной длины и ESC % / 1Through ESC % / 4для кодировок фиксированной длины, использующих от одного до четырех байтов соответственно. Вместо использования другой escape-последовательности для возврата к ISO 2022 два байта, следующие за исходной escape-последовательностью, определяют оставшуюся длину в байтах, закодированную в базе 128 с использованием bytes 0x80–FF. Метка кодировки включается в ISO 8859-1 перед закодированным текстом и заканчивается символом STX ( ). [108]0x02

Сравнение с другими кодировками

Преимущества

Недостатки

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

Сноски

  1. ^ Японский :区点, латинизированныйкутен ; Китайский :区位; пиньинь : кувэй ; Корейский행렬 ; Ханджа行列; RR :  Хэн Нёль
  2. ^ Японский :, латинизированныйку , букв. 'зона'; Китайский :; пиньинь : цю ; Корейский ; Ханджа; RR :  Хэнг
  3. ^ Японский :, латинизированныйдесять , букв. 'точка'; Китайский :; пиньинь : вэй ; горит. 'позиция'; Корейский ; Ханджа; РР :  йёль
  4. ^ Японский :, латинизированныймужчины , букв. 'лицо'
  5. ^ ab Указано только для F -байтов 0x40 ( @), 0x41 ( A) и 0x42 ( B) по историческим причинам. [89] Некоторые реализации, такие как кодирование эмодзи SoftBank 2G , используют дополнительные экранированные символы этой формы для целей, не соответствующих ISO-2022. [96]
  6. ^ Внесено в список MARC-8 . [3] Дополнительную информацию см. в сноске ниже.ESC , F
  7. ^ F , скорректированный в диапазоне 1-63, указывает, какая (совместимая с предыдущими версиями) версия следующей регистрации необходима, чтобы старые системы знали, что они устарели. [97]
  8. ^ В более ранних выпусках наборов из 96 символов не существовало, а escape-коды, которые теперь используются для наборов из 96 символов, были зарезервированы как место для дополнительных наборов из 94 символов. Соответственно, ESC 0x1B 0x2Cв ранних редакциях стандарта последовательность определялась как обозначение дальнейших наборов из 94 символов для G0. [98] Поскольку наборы из 96 символов не могут быть обозначены как G0, этот первый байт I не используется текущей редакцией стандарта. Однако он по-прежнему указан в MARC-8 . [3]
  9. ^ См. также, например, Printronix (2012), Справочное руководство программиста OKI® (PDF) , стр. 26для более новой системы, которая используется ESC ( Hдля переключения на ASCII с DBCS.

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

  1. ^ ECMA-35 (1994), Краткая история
  2. ^ ECMA-35 (1994), с. 51, приложение Д
  3. ^ abcde «Техника 2: Использование стандартных альтернативных наборов графических символов». MARC 21 Спецификации для структуры записи, наборов символов и носителей обмена . Библиотека Конгресса . 05.12.2007. Архивировано из оригинала 22 июля 2020 г. Проверено 19 июля 2020 г.
  4. ^ «ECMA-35: Структура кода символов и методы расширения (веб-страница)» . Экма Интернешнл . Архивировано из оригинала 25 апреля 2022 г. Проверено 27 апреля 2022 г.
  5. ^ abcd ECMA-35 (1994), стр. 15–16, глава 8.1.
  6. ^ ab ECMA-35 (1994), глава 13
  7. ^ ab ECMA-35 (1994), главы 12, 14
  8. ^ ab ECMA-35 (1994), глава 11
  9. ^ abcde ISO/IEC FDIS 8859-10 (1998), стр. 1, глава 1 («Объем применения»)
  10. ^ abcde ECMA-144 (2000), с. 1, глава 1 («Объем применения»)
  11. ^ abcdef Lunde (2008), стр. 242–245, глава 4 («Методы кодирования»), раздел «Кодирование EUC»
  12. ^ abcd Lunde (2008), стр. 253–255, глава 4 («Методы кодирования»), раздел «Кодировки EUC и ISO-2022».
  13. ^ ab ISO-IR-196 (1996)
  14. ^ abc Мой, Эдвард; Гильдеа, Стивен; Дикки, Томас. «Управление, начиная с ESC». Управляющие последовательности XTerm . Архивировано из оригинала 10 октября 2019 г. Проверено 4 октября 2019 г.
  15. ^ ECMA-35 (1994), главы 6, 7.
  16. ^ ECMA-35 (1994), глава 8
  17. ^ ECMA-35 (1994), глава 9
  18. ^ ab ECMA-35 (1994), глава 15
  19. ^ Лунде (2008), стр. 228–234, Глава 4 («Методы кодирования»), раздел «Кодирование ISO-2022»
  20. ^ Лунде (2008), стр. 19–20, Глава 1 («Обзор обработки информации CJKV»), раздел «Что такое строка-ячейка и плоская-строка-ячейка?»
  21. ^ ECMA-35 (1994), с. 4, определение 4.11
  22. ^ ECMA-35 (1994), с. 5, определение 4.18
  23. ^ См., например, ISO-IR-14 (1975), определяющий обозначение G0 римского набора JIS X 0201 как ESC 2/8 4/10.
  24. ^ ECMA-35 (1994), с. 5, глава 5.1
  25. ^ См., например, RFC 1468 (1993), определяющий обозначение G0 римского набора JIS X 0201 как ESC ( J.
  26. ^ ECMA-35 (1994), с. 7, глава 6.2
  27. ^ ECMA-35 (1994), с. 10, глава 6.3.2
  28. ^ ECMA-35 (1994), с. 4, определение 4.17
  29. ^ ECMA-35 (1994), с. 4, определение 4.14
  30. ^ ECMA-35 (1994), с. 28, глава 13.1
  31. ^ abc ECMA-35 (1994), с. 33, глава 13.3.3
  32. ^ ECMA-48 (1991), стр. 24–26, глава 5.4.
  33. ^ abcd ECMA-35 (1994), с. 11, глава 6.4.3
  34. ^ ИСО-ИР-208 (1999)
  35. ^ ИСО-ИР-155 (1990)
  36. ^ ИСО-ИР-164 (1992)
  37. ^ ab ECMA-35 (1994), с. 10, глава 6.3.3
  38. ^ Google Inc. (2014). «ansi.go, строка 134». Библиотека escape-последовательностей ANSI для Go . Архивировано из оригинала 30 апреля 2022 г. Проверено 14 сентября 2019 г.
  39. ^ ECMA-43 (1991), с. 5, глава 7 («Спецификация символов 8-битного кода»)
  40. ^ ISO/IEC FDIS 8859-10 (1998), стр. 3, глава 6 («Спецификация кодированного набора символов»)
  41. ^ ECMA-144 (2000), с. 3, глава 6 («Спецификация кодированного набора символов»)
  42. ^ ECMA-43 (1991), с. 19, приложение С («Композитные графические символы»)
  43. ^ ab ECMA-35 (1994), с. 10, глава 6.4.1
  44. ^ ab ECMA-35 (1994), с. 11, глава 6.4.4
  45. ^ abc ECMA-35 (1994), с. 11, глава 6.4.2
  46. ^ ИСО-ИР-104 (1985)
  47. ^ ИСО-ИР-1 (1975)
  48. ^ ab ECMA-35 (1994), с. 19, глава 8.5.1
  49. ^ ab ECMA-35 (1994), с. 19, глава 8.5.2
  50. ^ ECMA-43 (1991), с. 8, глава 7.6 («Набор C1»)
  51. ^ ab ECMA-35 (1994), с. 29, глава 13.2.1
  52. ^ ab ECMA-35 (1994), с. 12, глава 6.5.1
  53. ^ ECMA-35 (1994), с. 12, глава 6.5.2
  54. ^ abc ISO-IR, с. 19, глава 2.7 («Отдельные функции управления»)
  55. ^ ECMA-35 (1994), с. 12, глава 6.5.4
  56. ^ ECMA-48 (1991), глава 5.5.
  57. ^ ISO/TC 97/SC 2 (30 декабря 1976 г.). Возврат к исходному состоянию (RIS) (PDF) . ITSCJ/ IPSJ . ИСО-ИК -35.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  58. ^ ECMA-35 (1994), с. 12, глава 6.5.3
  59. ^ ab ECMA-35 (1994), с. 14, глава 7.3, таблица 2
  60. ^ ИСО-ИР-14 (1975)
  61. ^ ab ITU-T (11 августа 1995 г.). Рекомендация T.51 (1992 г.) Поправка 1. Архивировано из оригинала 02 августа 2020 г. Проверено 25 декабря 2019 г.
  62. ^ ИСО-ИР-106 (1985)
  63. ^ ECMA-35 (1994), с. 15, глава 7.3, примечание 23
  64. ^ ИСО-ИР-140 (1987)
  65. ^ ИСО-ИР-7 (1975)
  66. ^ ИСО-ИР-26 (1976)
  67. ^ ИСО-ИР-36 (1977)
  68. ^ ECMA-35 (1980), с. 8, глава 5.1.7
  69. ^ ab ISO-IR-105 (1985)
  70. ^ abcd ECMA-35 (1994), с. 17, глава 8.3.1
  71. ^ abcd ECMA-35 (1994), с. 23, глава 9.3.1
  72. ^ abc ECMA-35 (1994), с. 19, глава 8.4
  73. ^ abc ECMA-35 (1994), с. 17, глава 8.3.2
  74. ^ ECMA-35 (1994), стр. 23–24, глава 9.4.
  75. ^ ECMA-35 (1994), с. 27, глава 11.1
  76. ^ ECMA-35 (1994), с. 17, глава 8.3.3
  77. ^ ECMA-35 (1994), с. 47, приложение Б
  78. ^ ИСО-ИК, с. 2, глава 1 («Введение»)
  79. ^ ИСО/МЭК 2375 (2003)
  80. ^ ab «Обработка декларации SGML в SP». SP: система SGML, соответствующая международному стандарту ISO 8879 .
  81. ^ «20: Декларация SGML HTML 4» . Спецификация HTML 4.01 . W3C .
  82. ^ ИСО-ИК, с. 10, глава 2.2 («Набор графических символов из 94 символов со вторым промежуточным байтом»)
  83. ^ ARIB STD-B24 (2008), с. 39, часть 2, Таблица 7-3
  84. ^ Масчек, Свен; Ле Бретон, Стефан; Гамильтон, Ричард Л. «Об« альтернативном наборе символов для рисования линий »». ~sven_mascheck/ . Архивировано из оригинала 29 декабря 2019 г. Проверено 8 января 2020 г.
  85. ^ ECMA-35 (1994), с. 36, глава 14.4
  86. ^ ECMA-35 (1994), с. 36, глава 14.4.2, примечание 48
  87. ^ ECMA-35 (1994), с. 36, глава 14.4.2, примечание 47
  88. ^ ETS 300 706 (1997), с. 103, глава 14 («Динамически переопределяемые символы»)
  89. ^ abcdefghijklmnopq ECMA-35 (1994), стр. 35–36, глава 14.3.2
  90. ^ ISO/IEC 10646 (2017), стр. 19–20, глава 12.4 («Идентификация набора функций управления»)
  91. ^ ECMA-35 (1994), с. 32, таблица 5
  92. ^ abc ECMA-35 (1994), стр. 37–41, глава 15.2.
  93. ^ ECMA-35 (1994), с. 34, глава 14.2.2
  94. ^ ECMA-35 (1994), с. 34, глава 14.2.3
  95. ^ Цифровой . «DECDWL — линия двойной ширины и одинарной высоты». Информация о программаторе видеотерминала VT510 . Архивировано из оригинала 2 августа 2020 г. Проверено 17 января 2020 г.
  96. ^ Кавасаки, Юсуке (2010). «Кодировать::JP::Emoji::Кодировка». Кодировать-JP-Emoji . Строка 268. Архивировано из оригинала 30 апреля 2022 г. Проверено 28 мая 2020 г.
  97. ^ ECMA-35 (1994), стр. 36–37, глава 14.5.
  98. ^ ECMA-35 (1980), стр. 14–15, глава 5.3.7.
  99. ^ abcd ISO-IR, с. 20, глава 2.8.1 («Системы кодирования со стандартным возвратом»)
  100. ^ abcd ECMA-35 (1994), стр. 41–42, глава 15.4.
  101. ^ abcde ISO-IR, с. 21, глава 2.8.2 («Системы кодирования без стандартного возврата»)
  102. ^ ECMA-35 (1994), с. 41, глава 15.3
  103. ^ abc ISO/IEC 10646 (2017), с. 19, глава 12.2 («Идентификация схемы кодирования UCS»)
  104. ^ ISO/IEC 10646 (2017), стр. 18–19, глава 12.1 («Цель и контекст идентификации»).
  105. ^ ИСО-ИР-192 (1996)
  106. ^ ИСО-ИР-195 (1996)
  107. ^ ISO/IEC 10646 (2017), с. 20, глава 12.5 («Идентификация системы кодирования ISO/IEC 2022»)
  108. ^ ab Scheifler (1989), § Кодировки нестандартных наборов символов
  109. ^ Лунде (2008), стр. 229–230, глава 4 («Методы кодирования»), раздел «Кодировка ISO-2022» «Те кодировки, которые широко использовались в прошлом или продолжают использоваться сегодня для некоторых целей, были выделены».
  110. ^ ab «Дополнительная необходимая информация, связанная с кодированием». Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 7 января 2015 г.
  111. ^ abc Стандарт кодирования WHATWG, раздел 2 («Безопасность»).
  112. ^ abc Стандарт кодирования WHATWG, глава 4.2 («Имена и метки»), привязка «замена»
  113. ^ abcd Стандарт кодирования WHATWG, раздел 14.1 («замена»)
  114. ^ abcdef RFC 1468 (1993)
  115. ^ abc «Идентификаторы кодовых страниц». Центр разработки Windows . Майкрософт. Архивировано из оригинала 16 июня 2019 г. Проверено 16 сентября 2019 г.
  116. ^ ab Стандарт кодирования WHATWG, раздел 12.2 («ISO-2022-JP»)
  117. ^ Чанг, Хе-Шик. «Модули/cjkcodecs/_codecs_iso2022.c, строка 1122». Дерево исходного кода cPython . Фонд программного обеспечения Python. Архивировано из оригинала 30 апреля 2022 г. Проверено 15 сентября 2019 г.
  118. ^ «кодеки — реестр кодеков и базовые классы § Стандартные кодировки» . Документация Python 3.7.4 . Фонд программного обеспечения Python. Архивировано из оригинала 28 июля 2019 г. Проверено 16 сентября 2019 г.
  119. ^ «2: Кодовые наборы и преобразование кодовых наборов» . Технический справочник DIGITAL UNIX по использованию японских функций . Корпорация цифрового оборудования , Compaq .[ мертвая ссылка ]
  120. ^ ab Lunde (2008), стр. 236–238, глава 4 («Методы кодирования»), раздел «Предшественник кодировки ISO-2022-JP — кодировка JIS»
  121. ^ RFC 1554 (1993)
  122. ^ RFC 2237 (1997)
  123. ^ «PQ02042: Новая функция для обеспечения поддержки C/370 iconv() для японского ISO-2022-JP» . ИБМ . 19 января 2021 г. Архивировано из оригинала 4 января 2022 г. Проверено 4 января 2022 г.
  124. ^ ab "CCSID 9148". Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  125. ^ "CCSID 956" . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 2 декабря 2014 г.
  126. ^ "CCSID 957" . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 30 ноября 2014 г.
  127. ^ "CCSID 958" . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 1 декабря 2014 г.
  128. ^ "CCSID 959" . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 2 декабря 2014 г.
  129. ^ "CCSID 5052" . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  130. ^ "CCSID 5053" . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  131. ^ "CCSID 5054" . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  132. ^ "CCSID 5055" . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  133. ^ ab RFC 1557 (1993)
  134. ^ «КС X 1001:1992» (PDF) . Архивировано (PDF) из оригинала 26 сентября 2007 г. Проверено 12 июля 2007 г.
  135. ^ ИСО-ИР-149 (1988)
  136. ^ abcd RFC 1922 (1996)
  137. ^ ECMA-43 (1991), стр. 9–10, глава 8 («Уровни»)
  138. ^ ECMA-43 (1985), стр. 7–11, глава 7.3 («Набор G0»)
  139. ^ ECMA-43 (1991), стр. 6–8, глава 7.4 («Набор G0»)
  140. ^ ECMA-43 (1991), с. 11, глава 10.3 («Идентификация версии»)
  141. ^ ab ECMA-43 (1991), с. 23, приложение E («Основные различия между вторым изданием (1985 г.) и настоящим (третьим) изданием настоящего стандарта ECMA»)
  142. ^ IPTC (1995). Рекомендуемый формат сообщения IPTC (PDF) (5-е изд.). IPTC TEC 7901. Архивировано (PDF) из оригинала 25 января 2022 г. Проверено 14 января 2020 г.
  143. ^ ECMA-43 (1991), стр. 10, глава 9.2 («Уникальное кодирование символов»)
  144. ^ ван Винген, Йохан В. (1999). «8. Расширение кода, ISO 2022 и 2375, ISO 4873 и 10367». Наборы символов. Буквы, жетоны и коды . Терена. Архивировано из оригинала 01 августа 2020 г. Проверено 2 октября 2019 г.
  145. ^ ECMA-43 (1991), стр. 10–11, глава 10 («Идентификация версии и уровня»)
  146. ^ IBM . «Архитектура представления символьных данных (CDRA)». ИБМ . стр. 157–162. Архивировано из оригинала 23 июня 2019 г. Проверено 18 июня 2020 г.
  147. ^ Шайфлер (1989)
  148. ^ Шайфлер (1989), § Управляющие персонажи
  149. ^ Шайфлер (1989), § Направленность
  150. ^ Шайфлер (1989), § Кодировки стандартного набора символов
  151. ^ Шайфлер (1989), § Утвержденные стандартные кодировки
  152. ^ «DICOM PS3.2 2016d — соответствие; D.6.2 Наборы символов; D.6 Поддержка наборов символов» . Архивировано из оригинала 16 февраля 2020 г. Проверено 21 мая 2020 г.
  153. ^ «Вариант DICOM ISO 2022» . Архивировано из оригинала 30 апреля 2013 г. Проверено 25 июля 2009 г.
  154. ^ Аб Сивонен, Анри (17 декабря 2018 г.). «(НЕОТПРАВЛЕННЫЙ ЧЕРНОВИК) Нет генерации U + FFFD для содержимого ASCII-состояния нулевой длины между Escape-последовательностями ISO-2022-JP» (PDF) . Архивировано (PDF) из оригинала 21 февраля 2019 г. Проверено 21 февраля 2019 г.
  155. ^ «935453 — Соберите телеметрию о HZ и других кодировках, которые мы можем попытаться удалить». Архивировано из оригинала 19 мая 2017 г. Проверено 18 июня 2018 г.
  156. ^ Дэвис, Марк; Суиньяр, Мишель (19 сентября 2014 г.). «3.6.2 Некоторые выходные данные для всех входных данных». Технический отчет Unicode № 36: Вопросы безопасности Unicode (версия 15) . Консорциум Юникод. Архивировано из оригинала 22 февраля 2019 г. Проверено 21 февраля 2019 г.


Приведенные стандарты и индексы реестра

Указаны зарегистрированные наборы кодов

Интернет-запросы на комментарии цитируются

Другие опубликованные работы, цитируемые

дальнейшее чтение

Внешние ссылки