Расширенный двоично - десятичный код обмена [1] ( EBCDIC ; [1] / ɛ б ы ɪ д ɪ к / ) представляет собой восьми- битный кодировка символов используется в основном на IBM ЭВМ и IBM среднего класса компьютер операционных систем. Он произошел от кода, используемого с перфокартами, и соответствующего шестибитного двоичного десятичного кода, который использовался в большинстве компьютерных периферийных устройств IBM в конце 1950-х - начале 1960-х годов. [2] Он поддерживается различными платформами сторонних производителей, такими какFujitsu-Siemens ' BS2000 / OSD , ОС-IV MSP и MSP-EX, то серия SDS Сигма , Unisys В.С. / 9 , Unisys MCP и ICL УМЭ .
Классификация | 8-битная базовая латинская кодировка (не ASCII) |
---|---|
Предшествует | BCD |
История
EBCDIC был разработан в 1963 году и 1964 году IBM и было объявлено , с выпуском IBM System / 360 линии мэйнфреймов компьютеров . Это восьмибитная кодировка символов, разработанная отдельно от семибитной схемы кодирования ASCII . Он был создан , чтобы расширить существующую двоично-Десятичный (BCD) Interchange код или двоично - кодированный десятичный информационный код , который сам по себе был разработан в качестве эффективного средства , кодирующие две зоны и число ударов на перфокартах на шесть битов. Различное кодирование «s» и «S» (с использованием позиции 2 вместо 1) сохранялось для перфокарт, где было желательно, чтобы дыроколы не располагались слишком близко друг к другу, чтобы гарантировать целостность физической карты. [ необходима цитата ]
Хотя IBM была главным сторонником комитета по стандартизации ASCII [3], у компании не было времени подготовить периферийные устройства ASCII (например, перфораторы карт) для поставки с компьютерами System / 360, поэтому компания остановилась на EBCDIC. [2] Система / 360 стала бешено успешной вместе с такими клонами, как RCA Spectra 70 , ICL System 4 и Fujitsu FACOM, как и EBCDIC.
Все периферийные устройства и операционные системы IBM для мэйнфреймов и среднего уровня используют EBCDIC в качестве кодировки [4] (с допуском для ASCII, например, ISPF в z / OS может просматривать и редактировать файлы в кодировке EBCDIC и ASCII). Программное обеспечение и многие аппаратные периферийные устройства могут выполнять преобразование в кодировки и из них, а современные мэйнфреймы (такие как IBM Z ) включают инструкции процессора на аппаратном уровне для ускорения преобразования между наборами символов.
Существует формат преобразования Unicode, ориентированный на EBCDIC, называемый UTF-EBCDIC, предложенный консорциумом Unicode, разработанный для обеспечения простого обновления программного обеспечения EBCDIC для обработки Unicode, но не предназначенный для использования в средах открытого обмена. Даже в системах с обширной поддержкой EBCDIC он не пользовался популярностью. Например, z / OS поддерживает Unicode (предпочитая конкретно UTF-16 ), но z / OS имеет только ограниченную поддержку UTF-EBCDIC.
IBM AIX, работающий на RS / 6000 и его потомках, включая IBM Power Systems , Linux, работающий на IBM Z , и операционные системы, работающие на IBM PC и его потомках, используют ASCII, как и AIX / 370 и AIX / 390, работающие на System / 370 и мэйнфреймы System / 390 .
Совместимость с ASCII
Было много трудностей с написанием программного обеспечения, которое работало бы как в ASCII, так и в EBCDIC.
- Пробелы между буквами делали простой код, который работал в ASCII, не работал на EBCDIC. Например, будет печатать алфавит от A до Z, если используется ASCII, но печатать 41 символ (включая ряд неназначенных) в EBCDIC. Чтобы исправить это, потребовалось усложнить код вызовами функций, чему очень сопротивлялись программисты.
for (c = 'A'; c <= 'Z'; ++c) putchar(c);
- Сортировка EBCDIC помещает строчные буквы перед прописными буквами и буквы перед числами, в точности противоположно ASCII.
- Языки программирования, форматы файлов и сетевые протоколы, разработанные для ASCII, быстро использовали доступные знаки препинания (такие как фигурные скобки { и } ), которых не было в EBCDIC, что затруднило перевод в системы EBCDIC. И наоборот, в EBCDIC было несколько символов, таких как ¢ ( цент США ), которые использовались в системах IBM и не могли быть переведены в ASCII.
- Наиболее распространенное соглашение о новой строке, используемое с EBCDIC, - это использование кода NEL (NEXT LINE) между строками. Конвертеры в другие кодировки часто заменяют NEL на LF или CR / LF , даже если в целевой кодировке есть NEL. Это приводит к тому, что LF и NEL переводятся в один и тот же символ и не могут быть различимы.
- Если использовался семибитный ASCII, в 8-битных байтах был «неиспользуемый» старший бит, и многие части программного обеспечения сохраняли там другую информацию. Программное обеспечение также упаковывает семь битов и отбрасывает восьмой, например, упаковывая пять семибитных символов ASCII в 36-битное слово. [5] В PDP-11 байты с установленным старшим битом обрабатывались как отрицательные числа, поведение, которое было скопировано в C , вызывая неожиданные проблемы, если был установлен старший бит. Все это затрудняло переключение с ASCII на 8-битный EBCDIC (это также затрудняло переключение на (8-битные) расширенные кодировки ASCII ).
Макет кодовой страницы
Существуют сотни кодовых страниц EBCDIC, основанных на исходной кодировке символов EBCDIC; существует множество кодовых страниц EBCDIC, предназначенных для использования в разных частях мира, включая кодовые страницы для нелатинских шрифтов, таких как китайский, японский (например, EBCDIC 930, JEF и KEIS), корейский и греческий (EBCDIC 875) ). Также существует огромное количество вариаций, в которых буквы меняются местами без видимой причины.
В таблице ниже показано «инвариантное подмножество» [6] EBCDIC, которое представляет собой символы, которые должны иметь одинаковые назначения на всех кодовых страницах EBCDIC. Он также показывает (серым цветом) отсутствующие знаки препинания ASCII и EBCDIC, расположенные там, где они находятся на кодовой странице 37 (один из вариантов кодовой страницы EBCDIC). Неназначенные коды обычно заполняются международными или региональными символами в различных вариантах кодовой страницы EBCDIC , но символы серого цвета также часто перемещаются или меняются местами. В каждой ячейке первая строка представляет собой аббревиатуру управляющего кода или самого символа; а вторая строка - это код Unicode (пусто для элементов управления, не существующих в Unicode).
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ | NUL 0000 | SOH 0001 | STX 0002 | ETX 0003 | SEL | HT 0009 | RNL | DEL 007F | GE | СПС | RPT | ВТ 000Б | FF 000C | CR 000D | SO 000E | SI 000F |
1_ | DLE 0010 | DC1 0011 | DC2 0012 | DC3 0013 | res / enp | NL 0085 | BS 0008 | POC | CAN 0018 | EM 0019 | UBS | CU1 | IFS 001C | IGS 001D | IRS 001E | ius / itb 001F |
2_ | DS | SOS | FS | WUS | байп / вход | LF 000A | ETB 0017 | ESC 001B | SA | Лесхоз | см / sw | CSP | МИД | ENQ 0005 | ACK 0006 | BEL 0007 |
3_ | SYN 0016 | ИК | ПП | РНН | NBS | EOT 0004 | SBS | ЭТО | RFF | CU3 | DC4 0014 | NAK 0015 | SUB 001A | |||
4_ | SP 0020 | ¢ 00A2 | . 002E | < 003C | ( 0028 | + 002B | | 007C | |||||||||
5_ | & 0026 | ! 0021 | 0024 долл. США | * 002A | ) 0029 | ; 003B | ¬ 00AC | |||||||||
6_ | - 002D | / 002F | ¦ 00A6 | , 002C | % 0025 | _ 005F | > 003E | ? 003F | ||||||||
7_ | ` 0060 | : 003A | # 0023 | @ 0040 | ' 0027 | = 003D | « 0022 | |||||||||
8_ | а 0061 | b 0062 | c 0063 | d 0064 | e 0065 | f 0066 | г 0067 | h 0068 | я 0069 | ± 00B1 | ||||||
9_ | j 006A | k 006B | l 006C | м 006D | № 006E | o 006F | p 0070 | q 0071 | r 0072 | |||||||
A_ | ~ 007E | s 0073 | t 0074 | u 0075 | v 0076 | w 0077 | х 0078 | y 0079 | z 007A | |||||||
B_ | ^ 005E | [ 005B | ] 005D | |||||||||||||
C_ | { 007B | A 0041 | B 0042 | C 0043 | D 0044 | E 0045 | F 0046 | G 0047 | H 0048 | I 0049 | ||||||
D_ | } 007D | J 004A | K 004B | L 004C | M 004D | № 004E | O 004F | P 0050 | Q 0051 | R 0052 | ||||||
E_ | \ 005C | S 0053 | Т 0054 | U 0055 | V 0056 | W 0057 | X 0058 | Y 0059 | Z 005A | |||||||
F_ | 0 0030 | 1 0031 | 2 0032 | 3 0033 | 4 0034 | 5 0035 | 6 0036 | 7 0037 | 8 0038 | 9 0039 | EO |
Письмо Число Пунктуация Символ Другой Неопределенный
Определения элементов управления EBCDIC, отличных от ASCII
Ниже приведены определения управляющих символов EBCDIC, которые либо не отображаются на управляющие символы ASCII , либо имеют дополнительное применение. При отображении в Unicode они в основном отображаются в кодовые точки управляющих символов C1 способом, указанным в Архитектуре представления символьных данных IBM (CDRA). [7] [8]
Хотя отображение по умолчанию новой строки (NL) соответствует символу следующей строки ISO / IEC 6429 (NEL) (поведение которого также указано, но не требуется, в Приложении 14 Unicode), [9] большинство из этих C1- сопоставленные элементы управления не соответствуют ни элементам в наборе ISO / IEC 6429 C1 , ни тем из других зарегистрированных наборов элементов управления C1, таких как ISO 6630 . [10] Хотя это фактически делает не-ASCII элементы управления EBCDIC уникальным набором элементов управления C1, они не входят в число наборов элементов управления C1, зарегистрированных в реестре ISO-IR , [11] что означает, что им не назначена последовательность назначения набора элементов управления. (как указано в ISO / IEC 2022 и, возможно, разрешено в ISO / IEC 10646 (Unicode)). [12]
Помимо U + 0085 (Следующая строка), Стандарт Unicode не предписывает интерпретацию управляющих символов C1, оставляя их интерпретацию протоколам более высокого уровня (он предлагает, но не требует, их интерпретации ISO / IEC 6429 в отсутствие использования для для других целей), [13], поэтому такое сопоставление допустимо в Юникоде, но не определяется им.
Мнемонический | EBCDIC | Сопряжение CDRA [7] [8] | Имя | Описание [14] |
---|---|---|---|---|
SEL | 04 | 009C | Выбирать | Управляющий символ устройства, принимающий однобайтовый параметр. |
RNL | 06 | 0086 | Обязательная новая строка | Сброс разрыва строки Режим отступа табуляции |
GE | 08 | 0097 | Графический побег | Неблокирующий сдвиг, который изменяет интерпретацию следующего символа (см., Например, кодовую страницу 310 ). Сравните стандарты ISO / IEC 6429 SS2 (008E). |
СПС | 09 | 008D | Надстрочный | Начать надстрочный индекс или отменить подстрочный индекс. Сравните стандарты ISO / IEC 6429 PLU (008C). |
RPT | 0A | 008E | Повторить | Перейти в режим работы, повторяющий буфер печати |
RES / ENP | 14 | 009D | Восстановить, включить презентацию | Возобновить вывод (после BYP / INP ) |
NL | 15 | 0085 (000A) | Новая линия | Разрыв строки. Отображение по умолчанию (0085) соответствует ISO / IEC 6429 NEL . Отображения иногда меняются местами с переводом строки (EBCDIC 0x25) в соответствии с соглашением о переносе строки UNIX. [7] |
POC | 17 | 0087 | Связь с оператором программы | За ними следуют два однобайтовых оператора, которые идентифицируют конкретную функцию, например свет или функциональную клавишу. Контраст с ISO / IEC 6429 CSI (009B), OSC (009D) и APC (009F). |
UBS | 1А | 0092 | Единица Backspace | Дробный возврат. |
CU1 | 1B | 008F | Клиент использует один | Не используется IBM; для использования клиентами. |
ВМС / ITB | 1F | 001F | Разделитель блока обмена, промежуточный блок передачи | Либо используется в качестве разделителя информации для завершения блока, называемого «единицей» (как в ASCII ; см. Также IR ) или используется в качестве кода управления передачей для обозначения конца промежуточного блока. |
DS | 20 | 0080 | Выбор цифр | Используется инструкцией редактирования процессора S / 360 (ED) |
SOS | 21 год | 0081 | Начало значения | Используется инструкцией редактирования процессора S / 360 (ED). (Примечание: отличается от стандарта ISO / IEC 6429). SOS .) |
FS | 22 | 0082 | Разделитель полей | Используется инструкцией редактирования процессора S / 360 (ED). (Примечание: (Обмен) Разделитель файлов , сокращенно FS в ASCII, находится по адресу 0x1C и сокращенно IFS.) [14] |
WUS | 23 | 0083 | Подчеркивание слов | Подчеркивает непосредственно предшествующее слово. В отличие от SGR ISO / IEC 6429 . |
BYP / INP | 24 | 0084 | Обход, запретить презентацию | Отключает выход, т.е. игнорирует все графические символы и управляющие символы, кроме кодов управления передачей и RES / ENP, до следующего RES / ENP . |
SA | 28 год | 0088 | Установить атрибут | Обозначает начало последовательности управления устройством фиксированной длины. Устарело в пользу CSP . |
Лесхоз | 29 | 0089 | Начальное поле расширено | Обозначает начало управляющей последовательности переменной длины для конкретного устройства. Устарело в пользу CSP . |
SM / SW | 2А | 008A | Установить режим, переключатель | Специфичный для устройства элемент управления, который устанавливает режим работы, например переключатель буфера. |
CSP | 2B | 008B | Префикс последовательности управления | Обозначает начало управляющей последовательности переменной длины для конкретного устройства. За ним следует байт класса, определяющий категорию функции управления, байт счетчика, указывающий длину последовательности (включая байты счетчика и типа, но не байт класса или начальный CSP), байт типа, определяющий функцию управления в этой категории, и ноль или больше байтов параметра. Контраст с ISO / IEC 6429 DCS (0090) и CSI (009B). |
МИД | 2C | 008C | Изменить атрибут поля | Обозначает начало управляющей последовательности переменной длины для конкретного устройства. Устарело в пользу CSP . |
30 | 0090 | (зарезервированный) | Зарезервировано для будущего использования IBM | |
31 год | 0091 | (зарезервированный) | Зарезервировано для будущего использования IBM | |
ИК | 33 | 0093 | Индекс Возврат | Либо перейти к началу следующей строки (см. Также NL ) или завершить информационный блок (см. Также IUS / ITB ). |
ПП | 34 | 0094 | Презентационная позиция | Далее следуют два однобайтовых параметра (во-первых, функция, во-вторых, номер столбца или строки) для установки текущей позиции. В отличие от CUP и HVP ISO / IEC 6429 . |
РНН | 35 год | 0095 | Прозрачный | За ним следует однобайтный параметр, который указывает количество следующих за ним байтов прозрачных данных. |
NBS | 36 | 0096 | Числовой Backspace | Переместитесь назад на ширину одной цифры. |
SBS | 38 | 0098 | Нижний индекс | Начать нижний индекс или отменить верхний индекс. Сравните стандарты ISO / IEC 6429 PLD (008B). |
ЭТО | 39 | 0099 | Табуляция отступа | Смещает текущую и все последующие строки до тех пор, пока РНЛ или Встречается RFF . |
RFF | 3А | 009A | Обязательная подача формы | Сброс разрыва страницы Режим отступа табуляции . |
CU3 | 3B | 009B | Клиент использует два | Не используется IBM; для использования клиентами. |
3E | 009E | (зарезервированный) | Зарезервировано для будущего использования IBM | |
EO | FF | 009F | Восемь человек | Все символы используются в качестве наполнителя |
Кодовые страницы с наборами символов Latin-1
Следующие кодовые страницы содержат полный набор символов Latin-1 (ISO / IEC 8859-1). В первом столбце указан исходный номер кодовой страницы. Во втором столбце указан номер кодовой страницы, обновленной знаком евро (€), заменяющим знак универсальной валюты (¤) (или, в случае EBCDIC 924, с набором, измененным в соответствии с ISO 8859-15 ).
CCSID | Обновление евро | Страны |
---|---|---|
037 | 1140 | Австралия, Бразилия, Канада, Новая Зеландия, Португалия, Южная Африка, США |
273 | 1141 | Австрия, Германия |
277 | 1142 | Дания, Норвегия |
278 | 1143 | Финляндия, Швеция |
280 | 1144 | Италия |
284 | 1145 | Латинская Америка, Испания |
285 | 1146 | Ирландия, Соединенное Королевство |
297 | 1147 | Франция |
500 | 1148 | Международный |
871 | 1149 | Исландия |
1047 | 924 | Открытые системы ( компилятор MVS C ) |
Критика и юмор
Защитник программного обеспечения с открытым исходным кодом и разработчик программного обеспечения Эрик С. Реймонд пишет в своем « Жаргонном файле», что EBCDIC ненавидели хакеры, имея в виду [15] членов субкультуры программистов-энтузиастов. Файл жаргона 4.4.7 дает следующее определение: [16]
EBCDIC: / eb´s @ · dik /, / eb´see`dik /, / eb´k @ · dik /, n. [сокращение, Extended Binary Coded Decimal Interchange Code] Предполагаемый набор символов, используемый на динозаврах IBM. Он существует как минимум в шести взаимно несовместимых версиях, каждая из которых отличается такими прелестями, как несмежные последовательности букв и отсутствие нескольких знаков пунктуации ASCII, довольно важных для современных компьютерных языков (какие именно символы отсутствуют, зависит от того, какую версию EBCDIC вы используете. смотря на). IBM адаптировала EBCDIC из кода перфокарт в начале 1960-х годов и провозгласила его тактикой контроля над потребителями (см. Заговор о соединителях ), отказавшись от уже установленного стандарта ASCII. Сегодня IBM заявляет, что является компанией с открытыми системами , но собственное описание IBM вариантов EBCDIC и способов преобразования между ними по-прежнему засекречено внутри компании как сверхсекретное, записанное перед чтением. Хакеры бледнеют от самого названия EBCDIC и считают его проявлением чистейшего зла.
- Файл жаргона 4.4.7
Дизайн EBCDIC был также источником многих шуток. Одна такая шутка [ необходима цитата ] гласила:
Профессор: «Итак, американское правительство обратилось к IBM с предложением разработать стандарт шифрования , и они придумали…»
Студент: «EBCDIC!»
Ссылки на набор символов EBCDIC сделаны в классической серии приключенческих игр Infocom Zork . В «Машинном зале» в Zork II EBCDIC используется для обозначения непонятного языка:
Это большая комната, полная разнообразной тяжелой техники, шумно жужжащей. В комнате пахнет сгоревшими резисторами. Вдоль одной стены расположены три кнопки соответственно круглой, треугольной и квадратной формы. Естественно, над этими кнопками есть инструкции, написанные в EBCDIC ...
Смотрите также
- UTF-EBCDIC
Рекомендации
- ^ a b Маккензи, Чарльз Э. (1980). Наборы кодированных символов, история и развитие . Серия системного программирования (1-е изд.). ISBN издательства Addison-Wesley Publishing Company, Inc. 0-201-14460-3. LCCN 77-90165 . ISBN 978-0-201-14460-4 . Проверено 22 мая 2016 . [1]
- ^ а б Бемер, Боб . «EBCDIC и P-Bit (самый большой компьютерный тупик в истории) - виньетки компьютерной истории» . Архивировано из оригинала на 2018-05-13 . Проверено 2 июля 2013 .
... но их принтеры и перфораторы не были готовы к работе с ASCII, и IBM просто НАДО было объявить.
- ^ «X3.4-1963» . 1963. с. 4. Архивировано 12 августа 2016 года. (NB. В последнем подкомитете ASA X3.2 из 21 члена IBM было четыре сотрудника.)
- ^ IBMnt (2008). «IBM подтверждает использование EBCDIC в своих мэйнфреймах по умолчанию» . Архивировано из оригинала на 2013-01-03 . Проверено 16 июня 2008 .
- ^ Справочное руководство PDP-10, Книга 2: Сборка исходной программы (PDF) . Корпорация цифрового оборудования . п. 221.
- ^ IBM Knowledge Center Неизменный набор символов
- ^ а б в Умамахесваран, ВС (1999-11-08). «3.3 Шаг 2: Преобразование байтов» . UTF-EBCDIC . Консорциум Unicode . Технический отчет по Unicode №16.
64 управляющих символа ... символ ASCII DELETE (U + 007F) ... отображаются в соответствии с соглашениями EBCDIC, как определено в Архитектуре представления символьных данных IBM, CDRA, за одним исключением - пара символов перевода строки EBCDIC и новой строки управляющие символы заменяются из их пар по умолчанию CDRA на управляющие символы ISO / IEC 6429 Line Feed (U + 000A) и Next Line (U + 0085)
- ^ а б Стил, Шон (1996-04-24). cp037_IBMUSCanada в таблицу Unicode . Консорциум Microsoft / Unicode .
- ^ Хенингер, Энди (2019-02-15). «NL: Next Line (A) (Не адаптируется)» . Алгоритм разрыва строки Unicode . Редакция 43. Консорциум Unicode . Приложение № 14 к стандарту Unicode.
- ^ ISO / TC 46 (1986-02-01). Дополнительные функции управления для библиографического использования в соответствии с международным стандартом ISO 6630 (PDF) . ITSCJ / IPSJ . ISO-IR-124.
- ^ Международный регистр кодированных наборов символов ISO / IEC для использования с escape-последовательностями (PDF) , ITSCJ / IPSJ , ISO-IR
- ^ ISO / IEC JTC 1 / SC 2 (2017). «12.4: Идентификация набора функций управления». Информационные технологии - Универсальный набор кодированных символов (UCS) (5-е изд.). ISO . С. 19–20. ИСО / МЭК 10646.
Для других наборов C0 или C1 последний октет F должен быть получен из Международного регистра наборов кодированных символов .... Если такая escape-последовательность появляется в последовательности кодовых единиц, соответствующей настоящему международному стандарту, она должна быть дополненным в соответствии с разделом 11.
- ^ Консорциум Unicode (2019). «23.1: Контрольные коды» (PDF) . Стандарт Юникода (изд. 12.0.0). С. 868–870. ISBN 978-1-936213-22-1.
- ^ а б «Приложение G-1. Определения управляющих символов EBCDIC» . Архитектура представления символьных данных . Корпорация IBM . Архивировано из оригинала на 2018-09-11.
- ^ Раймонд, Эрик С. (1997). «Словарь нового хакера» . п. 310.
- ^ «EBCDIC» . Файл жаргона . Архивировано 13 мая 2018 года . Проверено 13 мая 2018 .
Внешние ссылки
- Архитектура представления символьных данных (CDRA) от IBM на Wayback Machine (архивировано 13 мая 2018 г.). Содержит официальную информацию IBM о кодовых страницах и наборах символов.
- Кодовая страница 37
- Кодовая страница 1047
- Ссылка на кодовую страницу хоста от IBM, показывает диаграммы кода для нескольких однобайтовых страниц EBCDIC.
- «Кодовые страницы» . из «Глобализация IBM i» .
- ICU Converter Explorer Содержит дополнительную информацию о EBCDIC, полученную из IBM CDRA, включая DBCS EBCDIC (двухбайтовый набор символов EBCDIC)
- Таблицы сопоставления кодировки ICU Содержат машиночитаемые таблицы сопоставления Unicode для EBCDIC и многих других наборов символов.
- Список символов EBCDIC , включая десятичные и шестнадцатеричные значения, символьное имя и символ / функцию
- Кодовые страницы EBCDIC с кодировкой Latin-1 (JavaScript)
- Все кодовые страницы EBCDIC и 3270 графических escape-кодов на Wayback Machine (заархивировано 27 августа 2016 г.)