EBCDIC - EBCDIC
Эта статья нужны дополнительные цитаты для проверка.Январь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Классификация | 8 бит базовая латынь кодировки (не ASCII) |
---|---|
Предшествует | BCD |
Расширенный двоично-десятичный код обмена[1] (EBCDIC;[1] /ˈɛбsɪdɪk/) является восьмиступенчатымкусочек кодировка символов используется в основном на Мэйнфрейм IBM и IBM компьютер среднего уровня операционные системы. Он произошел от кода, используемого с перфокарты и соответствующие шестибитный десятичный двоичный код код, используемый с большинством компьютерные периферийные устройства конца 1950-х - начала 1960-х гг.[2] Он поддерживается различными платформами сторонних производителей, такими как Fujitsu-Siemens ' BS2000 / OSD, OS-IV, MSP и MSP-EX, SDS Sigma серии, Unisys VS / 9, Берроуз MCP и ICL VME.
История
EBCDIC был разработан в 1963 и 1964 гг. IBM и было объявлено с выпуском IBM System / 360 линия мэйнфрейма компьютеры. Это восьмибитная кодировка символов, разработанная отдельно от семибитной ASCII схема кодирования. Он был создан для расширения существующих Десятичное число с двоичным кодом (BCD) Код обмена, или BCDIC, который сам был разработан как эффективное средство кодирования двух зона и номер удары по перфокарты на шесть бит. Различное кодирование s и S (с использованием позиции 2 вместо 1) сохранялось с перфокарты где желательно, чтобы дыроколы не располагались слишком близко друг к другу, чтобы обеспечить целостность физической карты.[нужна цитата ]
В то время как IBM была главным сторонником комитета по стандартизации ASCII,[3] у компании не было времени подготовить периферийные устройства ASCII (например, перфораторы карт) для поставки с компьютерами System / 360, поэтому компания остановилась на EBCDIC.[2] System / 360 стала бешено успешной вместе с такими клонами, как RCA Spectra 70, Система ICL 4, и Fujitsu FACOM, таким образом, EBCDIC.
Все мэйнфреймы IBM и средний диапазон периферийные устройства и операционные системы использовать EBCDIC как внутреннюю кодировку[4] (с допуском для ASCII, например, ISPF в z / OS может просматривать и редактировать файлы в кодировке EBCDIC и ASCII). Программное обеспечение и многие аппаратные периферийные устройства могут преобразовывать кодировки и обратно, а современные мэйнфреймы (такие как IBM Z ) включают инструкции процессора на аппаратном уровне для ускорения преобразования между наборами символов.
Есть EBCDIC-ориентированный Формат преобразования Unicode называется 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 работает на Система / 370 и Система / 390 мэйнфреймы.
Совместимость с ASCII
Эта секция не цитировать любой источники.Январь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Было много трудностей с написанием программного обеспечения, которое работало бы как в ASCII, так и в EBCDIC.
- Пробелы между буквами сделали простой код, который работал в ASCII, не работал на EBCDIC. Например
за (c = 'А'; c <= 'Z'; ++c) путчар(c);
будет печатать алфавит от A до Z, если используется ASCII, но печатает 41 символ (включая ряд неназначенных) в EBCDIC. Чтобы исправить это, потребовалось усложнить код вызовами функций, чему очень сопротивлялись программисты. - Сортировка EBCDIC помещает строчные буквы перед прописными буквами и буквы перед числами, в точности противоположно ASCII.
- Языки программирования, форматы файлов и сетевые протоколы, разработанные для ASCII, быстро использовали доступные знаки препинания (например, фигурные скобки). { и }), которых не было в EBCDIC, что затрудняло перевод в системы EBCDIC. И наоборот, в EBCDIC было несколько символов, например ¢ (Цент США ), которые использовались в системах IBM и не могли быть переведены в ASCII.
- Наиболее распространенное соглашение о новой строке, используемое с EBCDIC, - это использование NEL (СЛЕДУЮЩАЯ СТРОКА) код между строками. Конвертеры в другие кодировки часто заменяют 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, расположенные там, где они находятся на кодовой странице 037 (один из вариантов кодовой страницы 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 | VT 000B | FF 000C | CR 000D | ТАК 000E | SI 000F |
1_ | DLE 0010 | DC1 0011 | DC2 0012 | DC3 0013 | res / enp | NL 0085 | BS 0008 | POC | МОЖЕТ 0018 | ЭМ 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 | ИК | PP | РНН | NBS | EOT 0004 | SBS | ЭТО | RFF | CU3 | DC4 0014 | НАК 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 | б 0062 | c 0063 | d 0064 | е 0065 | ж 0066 | грамм 0067 | час 0068 | я 0069 | ± 00B1 | ||||||
9_ | j 006A | k 006B | л 006C | м 006D | п 006E | о 006F | п 0070 | q 0071 | р 0072 | |||||||
A_ | ~ 007E | s 0073 | т 0074 | ты 0075 | v 0076 | ш 0077 | Икс 0078 | у 0079 | z 007A | |||||||
B_ | ^ 005E | [ 005B | ] 005D | |||||||||||||
C_ | { 007B | А 0041 | B 0042 | C 0043 | D 0044 | E 0045 | F 0046 | грамм 0047 | ЧАС 0048 | я 0049 | ||||||
D_ | } 007D | J 004A | K 004B | L 004C | M 004D | N 004E | О 004F | п 0050 | Q 0051 | р 0052 | ||||||
E_ | 005C | S 0053 | Т 0054 | U 0055 | V 0056 | W 0057 | Икс 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 (Юникод)).[12]
Помимо U + 0085 (Следующая строка), стандарт Unicode не предписывает интерпретацию управляющих символов C1, оставляя их интерпретацию протоколам более высокого уровня (он предлагает, но не требует, их интерпретации ISO / IEC 6429 в отсутствие использования для другие цели),[13] поэтому такое сопоставление допустимо, но не указано в Unicode.
Мнемонический | 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 не использует; для использования клиентами. |
IUS / ITB | 1F | 001F | Разделитель блока обмена, промежуточный блок передачи | Либо используется в качестве разделителя информации для завершения блока, называемого «единицей» (как в ASCII; смотрите также ИК) или используется в качестве кода управления передачей для обозначения конца промежуточного блока. |
DS | 20 | 0080 | Выбор цифр | Используется инструкцией редактирования процессора S / 360 (ED) |
SOS | 21 | 0081 | Начало значения | Используется инструкцией редактирования (ED) процессора S / 360. (Примечание: отличается от ISO / IEC 6429). SOS.) |
FS | 22 | 0082 | Разделитель полей | Используется инструкцией редактирования (ED) процессора S / 360. (Примечание: (Обмен) Разделитель файлов (сокращенно FS в ASCII, это 0x1C и сокращенно IFS.)[14] |
WUS | 23 | 0083 | Подчеркивание слов | Подчеркивает непосредственно предшествующее слово. Контраст с ISO / IEC 6429 SGR. |
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). |
PP | 34 | 0094 | Презентационная позиция | Затем следуют два однобайтовых параметра (во-первых, функция, во-вторых, номер столбца или строки) для установки текущей позиции. Контраст с ISO / IEC 6429 CUP и HVP. |
РНН | 35 | 0095 | Прозрачный | За ним следует однобайтный параметр, который указывает количество следующих за ним байтов прозрачных данных. |
NBS | 36 | 0096 | Числовой Backspace | Переместитесь назад на ширину одной цифры. |
SBS | 38 | 0098 | Нижний индекс | Начать нижний индекс или отменить верхний индекс. Сравните стандарты ISO / IEC 6429 PLD (008B). |
ЭТО | 39 | 0099 | Табуляция отступа | Смещает текущую и все последующие строки, пока RNL или же RFF встречается. |
RFF | 3А | 009A | Обязательная подача формы | Сброс разрыва страницы Табуляция отступа режим. |
CU3 | 3B | 009B | Клиент использует два | Не используется IBM; для использования клиентами. |
3E | 009E | (зарезервированный) | Зарезервировано для будущего использования IBM | |
EO | FF | 009F | Восемь | Все символы используются в качестве наполнителя |
Кодовые страницы с наборами символов Latin-1
Следующие кодовые страницы содержат полные Набор символов Latin-1 (ИСО / МЭК 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. [Аббревиатура, расширенный двоично-десятичный код обмена] Предполагаемый набор символов, используемый на динозаврах IBM. Он существует как минимум в шести взаимно несовместимых версиях, каждая из которых отличается такими прелестями, как несмежные последовательности букв и отсутствие нескольких знаков пунктуации ASCII, довольно важных для современных компьютерных языков (какие именно символы отсутствуют, зависит от того, какую версию EBCDIC вы используете. смотря на). IBM адаптировала EBCDIC из кода перфокарты в начале 1960-х годов и провозгласила его тактикой контроля над потребителями (см. заговор соединителя ), отказавшись от уже установленного стандарта ASCII. Сегодня IBM утверждает, что открытые системы компании, но собственное описание IBM вариантов EBCDIC и способов преобразования между ними по-прежнему засекречено внутри компании как сверхсекретное, сжигаемое перед чтением. Хакеры бледнеют на самом имя EBCDIC и считайте это проявлением чистейшего зла.
— Файл Jargon 4.4.7
Дизайн EBCDIC также был источником множества шуток. Одна такая шутка[нужна цитата ] шел:
Профессор: "Итак, американское правительство обратилось к IBM с предложением стандарт шифрования, и они придумали - "
Студент: "EBCDIC!"
Ссылки на набор символов EBCDIC сделаны в классической серии приключенческих игр Infocom. Зорк. В «Машинном зале» г. Зорк II, EBCDIC используется для обозначения непонятного языка:
Это большая комната, полная разнообразной тяжелой техники, которая шумно жужжит. В комнате пахнет сгоревшими резисторами. Вдоль одной стены расположены три кнопки, круглые, треугольные и квадратные соответственно. Естественно, над этими кнопками есть инструкции, написанные в EBCDIC ...
Смотрите также
Рекомендации
- ^ а б Маккензи, Чарльз Э. (1980). Наборы кодированных символов, история и развитие. Серия системного программирования (1-е изд.). Addison-Wesley Publishing Company, Inc. ISBN 0-201-14460-3. LCCN 77-90165. ISBN 978-0-201-14460-4. Получено 2016-05-22. [1]
- ^ а б Бемер, Боб. «EBCDIC и P-Bit (самый большой компьютерный тупик в истории) - виньетки по компьютерной истории». Архивировано из оригинал на 2018-05-13. Получено 2013-07-02.
... но их принтеры и перфораторы не были готовы к работе с ASCII, и IBM просто НАДО было объявить.
- ^ «Х3.4-1963». 1963. с. 4. В архиве из оригинала от 12.08.2016. (NB. В последний подкомитет ASA X3.2 из 21 члена IBM входило четыре сотрудника.)
- ^ IBMnt (2008). «IBM подтверждает использование EBCDIC в своих мэйнфреймах по умолчанию». Архивировано из оригинал на 2013-01-03. Получено 2008-06-16.
- ^ Справочное руководство PDP-10, Книга 2: Сборка исходной программы (PDF). Корпорация цифрового оборудования. п. 221.
- ^ IBM Knowledge Center неизменный набор символов
- ^ а б c Умамахесваран, В. (1999-11-08). «3.3 Шаг 2: преобразование байтов». UTF-EBCDIC. Консорциум Unicode. Технический отчет Unicode №16.
64 управляющих символа ... символ ASCII DELETE (U + 007F) ... отображаются в соответствии с соглашениями EBCDIC, как определено в Архитектуре представления символьных данных IBM, CDRA, за одним исключением - пара символов перевода строки EBCDIC и новой строки управляющие символы заменяются из их пар по умолчанию CDRA на управляющие символы перевода строки ISO / IEC 6429 (U + 000A) и следующей строки (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.
- ^ Международный регистр кодированных наборов символов ИСО / МЭК для использования с 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». Файл жаргона. В архиве из оригинала на 2018-05-13. Получено 2018-05-13.
внешняя ссылка
- Архитектура представления символьных данных (CDRA) от IBM на Wayback Machine (Архивировано 13 мая 2018 г.). Содержит официальную информацию IBM о кодовых страницах и наборах символов.
- F.0 Приложение F. Кодовые страницы из Международная разработка приложений AS / 400 V4R2
- ICU Converter Explorer Содержит дополнительную информацию о EBCDIC, полученную из IBM CDRA, включая DBCS EBCDIC (двухбайтовый набор символов EBCDIC)
- Таблицы сопоставления кодов ICU Содержит машиночитаемые таблицы сопоставления Unicode для EBCDIC и многих других наборов символов
- EBCDIC список символов, включая десятичные и шестнадцатеричные значения, символическое имя и символ / функцию
- Кодовые страницы EBCDIC с кодировкой Latin-1 (JavaScript)
- Все кодовые страницы EBCDIC и 3270 графических escape-кодов на Wayback Machine (архивировано 27 августа 2016 г.)