ASCII

Американский стандарт кодировки символов

ASCII
Таблица ASCII из MIL-STD-188-100 (1972)
MIME/IANAus-ascii
Псевдоним(ы)ISO-IR-006, [1] ANSI_X3.4-1968, ANSI_X3.4-1986, ISO_646.irv:1991, ISO646-US, США, IBM367, cp367 [2]
Язык(и)Английский (создано для; поддерживает не все заимствованные слова), малайский , ротокас , интерлингва , идо и X-SAMPA
КлассификацияСерия ИСО/МЭК 646
Расширения
ПредшествовалITA 2 , ПОЛЕВЫЕ ДАННЫЕ
ПреемникISO/IEC 8859 , ISO/IEC 10646 ( Юникод )

ASCII ( / ˈ æ s k / ASS -kee),[3]: 6 аббревиатура отAmerican Standard Code for Information Interchange, являетсякодировки символовдля электронной связи. Коды ASCII представляют текст в компьютерах,телекоммуникационном оборудованиии других устройствах. ASCII имеет всего 128кодовых точек, из которых только 95 являются печатными символами, что серьезно ограничивает его область применения. Набор доступных знаков препинания оказал значительное влияние на синтаксис компьютерных языков и разметку текста. ASCII оказал огромное влияние на дизайн наборов символов, используемых современными компьютерами, включаяUnicode, который имеет более миллиона кодовых точек, но первые 128 из них совпадают с ASCII.

Администрация адресного пространства Интернета (IANA) предпочитает использовать для этой кодировки символов название US-ASCII . [2]

ASCII является одним из важнейших достижений IEEE . [4]

Обзор

ASCII был разработан частично из телеграфного кода . Его первое коммерческое использование было в Teletype Model 33 и Teletype Model 35 в качестве семибитного телетайпного кода, продвигаемого Bell data services. [ когда? ] Работа над стандартом ASCII началась в мае 1961 года с первого заседания подкомитета X3.2 Американской ассоциации стандартов (ASA) (теперь Американский национальный институт стандартов или ANSI). Первое издание стандарта было опубликовано в 1963 году, [5] [6] подверглось существенному пересмотру в 1967 году, [7] [8] и испытало свое последнее обновление в 1986 году. [9] По сравнению с более ранними телеграфными кодами, предложенный код Bell и ASCII были заказаны для более удобной сортировки (т. е. алфавитного расположения) списков и дополнительных функций для устройств, отличных от телетайпов. [9]

Использование формата ASCII для сетевого обмена данными было описано в 1969 году. [10] Этот документ был официально повышен до уровня стандарта Интернета в 2015 году. [11]

Первоначально основанный на (современном) английском алфавите , ASCII кодирует 128 указанных символов в семибитные целые числа, как показано в таблице ASCII в этой статье. [12] Девяносто пять из закодированных символов являются печатными: они включают цифры от 0 до 9 , строчные буквы от a до z , заглавные буквы от A до Z и знаки препинания . Кроме того, исходная спецификация ASCII включала 33 непечатаемых управляющих кода , которые возникли в моделях Teletype ; большинство из них сейчас устарели, [13] хотя некоторые все еще широко используются, такие как коды возврата каретки , перевода строки и табуляции .

Например, строчная буква i будет представлена ​​в кодировке ASCII как двоичное число 1101001 = шестнадцатеричное число 69 ( i — девятая буква) = десятичное число 105.

Несмотря на то, что ASCII является американским стандартом, в нем нет кодовой точки для цента ( ¢). Он также не поддерживает английские термины с диакритическими знаками, такие как résumé и jalapeño , или собственные имена с диакритическими знаками, такие как Beyoncé (хотя на некоторых устройствах символы могут сочетаться со знаками препинания, такими как тильда (~) и обратный апостроф (`), чтобы аппроксимировать такие символы.)

История

ASCII (1963). Элемент управления Изображения эквивалентных элементов управления показаны там, где они есть, или серой точкой в ​​противном случае.

Американский стандартный код для обмена информацией (ASCII) был разработан под эгидой комитета Американской ассоциации стандартов (ASA), называемого комитетом X3, его подкомитетом X3.2 (позже X3L2), а затем рабочей группой X3.2.4 этого подкомитета (теперь INCITS ). Позднее ASA стал Институтом стандартов Соединенных Штатов Америки (USASI) [3] : 211  и в конечном итоге стал Американским национальным институтом стандартов (ANSI).

После заполнения других специальных символов и управляющих кодов ASCII был опубликован как ASA X3.4-1963, [6] [14] оставив 28 позиций кода без какого-либо назначенного значения, зарезервированных для будущей стандартизации, и один неназначенный управляющий код. [3] : 66, 245  В то время велись дебаты о том, должно ли быть больше управляющих символов вместо строчных букв. [3] : 435  Нерешительность длилась недолго: в мае 1963 года Рабочая группа CCITT по новому телеграфному алфавиту предложила назначить строчные символы палочкам [ a] [15] 6 и 7, [16] а Международная организация по стандартизации TC 97 SC 2 проголосовала в октябре за включение изменения в свой проект стандарта. [17] Целевая группа X3.2.4 проголосовала за одобрение изменения в ASCII на своем заседании в мае 1963 года. [18] Расположение строчных букв в палочках [a] [15] 6 и 7 привело к тому, что символы отличались по битовой схеме от заглавных на один бит, что упростило сопоставление символов без учета регистра и конструкцию клавиатур и принтеров.

Комитет X3 внес другие изменения, включая другие новые символы ( фигурные скобки и вертикальная черта ), [19] переименовав некоторые управляющие символы (SOM стал началом заголовка (SOH)) и переместив или удалив другие (RU был удален). [3] : 247–248  ASCII впоследствии был обновлен как USAS X3.4-1967, [7] [20] затем USAS X3.4-1968, [21] ANSI X3.4-1977 и, наконец, ANSI X3.4-1986. [9] [22]

Пересмотры

  • АСА X3.4-1963 [3] [6] [20] [22]
  • ASA X3.4-1965 (одобрен, но не опубликован, тем не менее используется в дисплейных станциях IBM 2260 и 2265 и в системе управления дисплеем IBM 2848 ) [3] : 423, 425–428, 435–439  [23] [20] [22]
  • USAS X3.4-1967 [3] [7] [22]
  • USAS X3.4-1968 [3] [21] [22]
  • ANSI X3.4-1977 [22]
  • ANSI X3.4-1986 [9] [22]
  • ANSI X3.4-1986 (R1992)
  • ANSI X3.4-1986 (R1997)
  • ANSI INCITS 4-1986 (R2002) [24]
  • ANSI INCITS 4-1986 (R2007) [25]
  • INCITS 4-1986 (R2012) [26]
  • INCITS 4-1986 (R2017) [27]
  • INCITS 4-1986 (R2022) [28]

В стандарте X3.15 комитет X3 также рассматривал, как следует передавать ASCII ( сначала младший бит ) [3] : 249–253  [29] и записывать на перфорированную ленту. Они предложили 9-дорожечный стандарт для магнитной ленты и попытались работать с некоторыми форматами перфокарт .

Соображения по дизайну

Ширина бита

Подкомитет X3.2 разработал ASCII на основе более ранних систем кодирования телетайпов. Как и другие кодировки символов , ASCII определяет соответствие между цифровыми битовыми шаблонами и символьными символами (то есть графемами и управляющими символами ). Это позволяет цифровым устройствам взаимодействовать друг с другом и обрабатывать, хранить и передавать ориентированную на символы информацию, такую ​​как письменный язык. До разработки ASCII используемые кодировки включали 26 буквенных символов, 10 числовых цифр и от 11 до 25 специальных графических символов. Чтобы включить все это и управляющие символы, совместимые со стандартом Международного телеграфного алфавита № 2 (ITA2) Консультативного комитета по международной телефонии и телеграфии (CCITT) 1932 года [30] [31] FIELDATA (1956 [ требуется ссылка ] ) и ранним EBCDIC (1963), для ASCII требовалось более 64 кодов.

ITA2, в свою очередь, был основан на коде Бодо , 5-битном телеграфном коде, изобретенном Эмилем Бодо в 1870 году и запатентованном в 1874 году. [31]

Комитет обсуждал возможность функции сдвига (как в ITA2 ), которая позволила бы представить более 64 кодов шестибитным кодом . В сдвинутом коде некоторые коды символов определяют выбор между вариантами для следующих кодов символов. Это позволяет компактное кодирование, но менее надежно для передачи данных , поскольку ошибка при передаче кода сдвига обычно делает длинную часть передачи нечитаемой. Комитет по стандартам принял решение против сдвига, и поэтому ASCII потребовал как минимум семибитный код. [3] : 215 §13.6, 236 §4 

Комитет рассматривал восьмибитный код, поскольку восемь бит ( октетов ) позволили бы двум четырехбитным шаблонам эффективно кодировать две цифры с помощью двоично-десятичного кода . Однако это потребовало бы, чтобы вся передача данных отправляла восемь бит, когда семи могло бы быть достаточно. Комитет проголосовал за использование семибитного кода, чтобы минимизировать затраты, связанные с передачей данных. Поскольку перфорированная лента в то время могла записывать восемь бит в одной позиции, она также допускала бит четности для проверки ошибок , если это было необходимо. [3] : 217 §c, 236 §5  Восьмибитные машины (с октетами в качестве собственного типа данных), которые не использовали проверку четности, обычно устанавливали восьмой бит в 0. [32]

Внутренняя организация

Сам код был структурирован таким образом, что большинство управляющих кодов были вместе, и все графические коды были вместе, для простоты идентификации. Первые две так называемые палочки ASCII [a] [15] (32 позиции) были зарезервированы для управляющих символов. [3] : 220, 236 8, 9)  Символ «пробел» должен был идти перед графикой, чтобы упростить сортировку , поэтому он стал позицией 20 hex ; [3] : 237 §10  по той же причине многие специальные знаки, обычно используемые в качестве разделителей, были помещены перед цифрами. Комитет решил, что важно поддерживать заглавные 64-символьные алфавиты , и решил структурировать ASCII так, чтобы его можно было легко сократить до пригодного для использования 64-символьного набора графических кодов, [3] : 228, 237 §14  , как это было сделано в коде DEC SIXBIT (1963). Поэтому строчные буквы не чередовались с заглавными . Чтобы сохранить опции, доступные для строчных букв и другой графики, специальные и числовые коды были расположены перед буквами, а буква A была помещена в позицию 41 в шестнадцатеричной системе счисления , чтобы соответствовать проекту соответствующего британского стандарта. [3] : 238 §18  Цифры 0–9 имеют префикс 011, но оставшиеся 4 бита соответствуют их соответствующим значениям в двоичной системе счисления, что делает преобразование с двоично-десятичным кодом простым (например, 5 в кодировке 011 0101 , где 5 — это 0101 в двоичной системе счисления).

Многие из не буквенно-цифровых символов были расположены так, чтобы соответствовать их смещенному положению на пишущих машинках; важная тонкость заключается в том, что они были основаны на механических пишущих машинках, а не на электрических . [33] Механические пишущие машинки следовали фактическому стандарту , установленному Remington No. 2 (1878), первой пишущей машинкой с клавишей Shift, и смещенные значения были 23456789-"#$%_&'() ранние пишущие машинки опускали 0 и 1 , используя вместо этого O (заглавную букву o ) и l (строчную букву L ), но 1!и 0)пары стали стандартными, как только 0 и 1 стали обычными. Таким образом, в ASCII !"#$%были помещены во вторую палочку, [a] [15] позиции 1–5, соответствующие цифрам 1–5 на соседней палочке. [a] [15] Однако скобки не могли соответствовать 9 и 0 , поскольку место, соответствующее 0, было занято символом пробела. Это было достигнуто путем удаления _(подчеркивания) из цифры 6 и сдвига оставшихся символов, что соответствовало многим европейским пишущим машинкам, которые ставили скобки перед цифрами 8 и 9. Это отличие от пишущих машинок привело к появлению клавиатур с парными битами , в частности, Teletype Model 33 , которая использовала смещенную влево раскладку, соответствующую ASCII, в отличие от традиционных механических пишущих машинок.

Электрические пишущие машинки, в частности IBM Selectric (1961), использовали несколько иную раскладку, которая стала фактическим стандартом для компьютеров — после IBM PC (1981), особенно Model M (1984) — и поэтому значения сдвига для символов на современных клавиатурах не так точно соответствуют таблице ASCII, как на более ранних клавиатурах. /?Пара также относится к № 2, и ,< .>пары использовались на некоторых клавиатурах (другие, включая № 2, не сдвигали ,(запятую) или .(точку), поэтому их можно было использовать в верхнем регистре без отмены сдвига). Однако ASCII разделила ;:пару (относящуюся к № 2) и переставила математические символы (различные соглашения, обычно -* =+) в :* ;+ -=.

Некоторые распространенные в то время символы пишущей машинки не были включены, в частности ½ ¼ ¢, в то время как ^ ` ~ были включены в качестве диакритических знаков для международного использования и < >для математического использования вместе с простыми линейными символами \ |(в дополнение к распространенному /). Символ @ не использовался в континентальной Европе, и комитет ожидал, что он будет заменен акцентированной À во французском варианте, поэтому @ был помещен в позицию 40 hex , прямо перед буквой A. [3] : 243 

Управляющие коды, которые считались необходимыми для передачи данных, были: начало сообщения (SOM), конец адреса (EOA), конец сообщения (EOM), конец передачи (EOT), «кто вы?» (WRU), «вы?» (RU), зарезервированное управление устройством (DC0), синхронный холостой ход (SYNC) и подтверждение (ACK). Они были расположены так, чтобы максимизировать расстояние Хэмминга между их битовыми комбинациями. [3] : 243–245 

Порядок символов

Порядок ASCII-кода также называется ASCIIбетическим порядком. [34] Сопоставление данных иногда выполняется в этом порядке, а не в «стандартном» алфавитном порядке ( последовательность сопоставления ). Основные отклонения в порядке ASCII:

  • Все заглавные буквы ставятся перед строчными; например, «Z» предшествует «a».
  • Цифры и многие знаки препинания ставятся перед буквами.

Промежуточный порядок преобразует заглавные буквы в строчные перед сравнением значений ASCII.

Набор символов

ASCII-код (1977/1986)
0123456789АБСДЭФ
0x НУЛЕВОЙ САХ СТХ ЭТХ ЭОТ ENQ АСК БЕЛ  БС   ХТ   ЛФ   ВТ   ФФ   CR   ТАК   СИ 
1x ДЛЕ ДК1 ДК2 ДК3 DC4 НАК СИН ЭТБ МОЖЕТ  ЭМ  СУБ ЕСК  ФС   ГС   РС   НАС 
2x  СП  !"#$%&'()*+,-./
3x0123456789:;<=>?
4x@АБСДЭФГЧАСяДж.КЛМНО
5xПВРСТУВВтХИЗ[\]^_
6x`абсгефгчасяджклмно
7xпдгсттывжхуз{|}~ ДЕЛ
  Изменено или добавлено в версии 1963 года
  Изменено как в версии 1963 года, так и в проекте 1965 года.

Группы персонажей

Управляющие символы

Ранние символы, назначенные 32 управляющим символам, пробелу и символам удаления. ( ISO 2047 , MIL-STD-188-100, 1972)

ASCII резервирует первые 32 кодовых точки (числа 0–31 в десятичной системе) и последнюю (число 127 в десятичной системе) для управляющих символов . Это коды, предназначенные для управления периферийными устройствами (например, принтерами ) или для предоставления метаинформации о потоках данных, например, хранящихся на магнитной ленте. Несмотря на свое название, эти кодовые точки не представляют собой печатаемые символы (т. е. они вообще не являются символами, а являются сигналами). Для целей отладки им назначаются символы-"заполнители" (например, приведенные в ISO 2047 и его предшественниках).

Например, символ 0x0A представляет функцию «перевода строки» (которая заставляет принтер продвигать бумагу), а символ 8 представляет « возврат на одну позицию ». RFC  2822 называет управляющие символы, которые не включают возврат каретки, перевод строки или пробел , непробельными управляющими символами. [35] За исключением управляющих символов, которые предписывают элементарное строчно-ориентированное форматирование, ASCII не определяет никаких механизмов для описания структуры или внешнего вида текста в документе. Другие схемы, такие как языки разметки , адресная страница и макет документа и форматирование.

В исходном стандарте ASCII для каждого управляющего символа использовались только короткие описательные фразы. Неоднозначность, которую это вызывало, иногда была преднамеренной, например, когда символ использовался немного иначе в терминальной ссылке, чем в потоке данных , а иногда случайной, например, в стандарте неясно значение слова «удалить».

Вероятно, наиболее влиятельным устройством, повлиявшим на интерпретацию этих символов, был Teletype Model 33 ASR, который представлял собой печатающий терминал с возможностью считывания/перфорации бумажной ленты . Бумажная лента была очень популярным носителем для долгосрочного хранения программ до 1980-х годов, менее дорогостоящим и в некотором смысле менее хрупким, чем магнитная лента. В частности, назначения машины Teletype Model 33 для кодов 17 (control-Q, DC1, также известный как XON), 19 (control-S, DC3, также известный как XOFF) и 127 ( delete ) стали фактическими стандартами. Модель 33 также была примечательна тем, что буквально воспринимала описание control-G (код 7, BEL, что означает звуковое оповещение оператора), поскольку устройство содержало настоящий колокольчик, который звонил при получении символа BEL. Поскольку на верхней части клавиши O также был изображен символ стрелки влево (из ASCII-1963, в котором этот символ использовался вместо подчеркивания ), несоответствующее требованиям использование кода 15 (control-O, shift), интерпретируемое как «удаление предыдущего символа», также было принято многими ранними системами с разделением времени, но в конечном итоге от него отказались.

Когда Teletype 33 ASR, оснащенный автоматическим считывателем бумажной ленты, получал control-S (XOFF, сокращение от «передача выключена»), это приводило к остановке считывателя ленты; прием control-Q (XON, передача включена) приводил к возобновлению работы считывателя ленты. Этот так называемый метод управления потоком был принят несколькими ранними компьютерными операционными системами в качестве сигнала «рукопожатия», предупреждающего отправителя о необходимости остановить передачу из-за надвигающегося переполнения буфера ; он сохраняется и по сей день во многих системах как метод ручного управления выводом. В некоторых системах control-S сохраняет свое значение, но control-Q заменяется вторым control-S для возобновления вывода.

33 ASR также можно было настроить на использование control-R (DC2) и control-T (DC4) для запуска и остановки перфорации ленты; на некоторых устройствах, оснащенных этой функцией, соответствующие управляющие символы на колпачке клавиши над буквой были TAPE и TAPE соответственно. [36]

Удаление или возврат на одну позицию

Телетайп не мог двигать пишущую головку назад, поэтому на его клавиатуре не было клавиши для отправки BS (возврат на одну позицию). Вместо этого была клавиша, помеченная RUB OUTкак отправляющая код 127 (DEL). Целью этой клавиши было стирание ошибок на бумажной ленте с ручным вводом: оператор должен был нажать кнопку на перфораторе ленты, чтобы сделать резервную копию, затем набрать стирание, которое пробивало все отверстия и заменяло ошибку символом, который должен был игнорироваться. [37] Телетайпы обычно использовались с менее дорогими компьютерами от Digital Equipment Corporation (DEC); эти системы должны были использовать доступные клавиши, и поэтому символ DEL был назначен для стирания предыдущего символа. [38] [39] Из-за этого видеотерминалы DEC (по умолчанию) отправляли символ DEL для клавиши, помеченной как «Backspace», в то время как отдельная клавиша, помеченная как «Delete», отправляла escape-последовательность ; многие другие конкурирующие терминалы отправляли символ BS для клавиши возврата на одну позицию.

Ранние драйверы tty Unix, в отличие от некоторых современных реализаций, позволяли устанавливать только один символ для стирания предыдущего символа в канонической обработке ввода (где доступен очень простой редактор строк); это могло быть установлено на BS или DEL, но не на оба, что приводило к повторяющимся ситуациям неоднозначности, когда пользователи должны были выбирать в зависимости от того, какой терминал они использовали ( оболочки , которые позволяют редактировать строки, такие как ksh , bash и zsh , понимают оба). Предположение, что ни одна клавиша не отправляет символ BS, позволяло использовать Ctrl+H для других целей, таких как команда префикса "help" в GNU Emacs . [40]

Побег

Многим другим управляющим символам были присвоены значения, сильно отличающиеся от их первоначальных. Например, символ «escape» (ESC, код 27) изначально предназначался для отправки других управляющих символов как литералов вместо вызова их значения, «escape-последовательности». Это то же самое значение «escape», которое встречается в кодировках URL, строках языка C и других системах, где определенные символы имеют зарезервированное значение. Со временем эта интерпретация была принята и в конечном итоге была изменена.

В современном использовании ESC, отправленный на терминал, обычно указывает на начало последовательности команд, которая может использоваться для обращения к курсору, прокрутки региона, установки/запроса различных свойств терминала и многого другого. Они обычно имеют форму так называемого " ANSI escape code " (часто начинающегося с " Control Sequence Introducer ", "CSI", " ESC [ ") из ECMA-48 (1972) и его последователей. Некоторые escape-последовательности не имеют вводных, например, "Reset to Initial State", "RIS" команда " ESC c ". [41]

Напротив, ESC, считанный с терминала, чаще всего используется как внеполосный символ, используемый для завершения операции или специального режима, как в текстовых редакторах TECO и vi . В графическом пользовательском интерфейсе (GUI) и оконных системах ESC обычно заставляет приложение прервать текущую операцию или выйти (завершить работу) вообще.

Конец строки

Присущая многим управляющим символам неоднозначность в сочетании с их историческим использованием создавала проблемы при передаче файлов «обычного текста» между системами. Лучшим примером этого является проблема новой строки в различных операционных системах . Телетайпы требовали, чтобы строка текста завершалась как «возвратом каретки» (который перемещает печатающую головку в начало строки), так и «переводом строки» (который перемещает бумагу на одну строку без перемещения печатающей головки). Название «возврат каретки» происходит от того факта, что на ручной пишущей машинке каретка, удерживающая бумагу, движется, в то время как пишущие планки, ударяющие по ленте, остаются неподвижными. Вся каретка должна была быть сдвинута (возвращена) вправо, чтобы расположить бумагу для следующей строки.

Операционные системы DEC ( OS/8 , RT-11 , RSX-11 , RSTS , TOPS-10 и т. д.) использовали оба символа для обозначения конца строки, чтобы консольное устройство (первоначально телетайпные машины) работало. К тому времени, когда появились так называемые «стеклянные TTY» (позже названные CRT или «немыми терминалами»), соглашение было настолько устоявшимся, что обратная совместимость требовала продолжения его соблюдения. Когда Гэри Килдалл создавал CP/M , он был вдохновлен некоторыми соглашениями интерфейса командной строки, используемыми в операционной системе RT-11 компании DEC.

До появления PC DOS в 1981 году IBM не имела никакого влияния на это, поскольку их операционные системы 1970-х годов использовали кодировку EBCDIC вместо ASCII, и они были ориентированы на ввод с перфокарт и вывод на строчный принтер, на котором концепция «возврата каретки» была бессмысленной. PC DOS от IBM (также продаваемая как MS-DOS корпорацией Microsoft) унаследовала это соглашение в силу того, что была в некоторой степени основана на CP/M, [42] а Windows , в свою очередь, унаследовала его от MS-DOS.

Требование двух символов для обозначения конца строки вносит ненужную сложность и двусмысленность в отношении того, как интерпретировать каждый символ, когда он встречается сам по себе. Для упрощения вопроса потоки данных обычного текста , включая файлы, на Multics использовали только перевод строки (LF) в качестве символа конца строки. [43] : 357  Драйвер tty будет обрабатывать преобразование LF в CRLF на выходе, чтобы файлы можно было напрямую печатать на терминале, а NL (новая строка) часто используется для обозначения CRLF в документах UNIX . Unix и Unix-подобные системы, а также системы Amiga переняли это соглашение от Multics. С другой стороны, оригинальные Macintosh OS , Apple DOS и ProDOS использовали только возврат каретки (CR) в качестве символа конца строки; однако, поскольку Apple позже заменила эти устаревшие операционные системы своей операционной системой macOS на основе Unix (ранее называвшейся OS X), теперь они также используют перевод строки (LF). Radio Shack TRS-80 также использовал одиночный CR для завершения строк.

Компьютеры, подключенные к ARPANET, включали машины, работающие под управлением операционных систем, таких как TOPS-10 и TENEX, использующих окончания строк CR-LF; машины, работающие под управлением операционных систем, таких как Multics, использующих окончания строк LF; и машины, работающие под управлением операционных систем, таких как OS/360 , которые представляли строки как количество символов, за которыми следовали символы строки, и которые использовали кодировку EBCDIC, а не ASCII. Протокол Telnet определял ASCII «сетевой виртуальный терминал» (NVT), так что соединения между хостами с различными соглашениями о завершении строк и наборами символов могли поддерживаться путем передачи стандартного текстового формата по сети. Telnet использовал ASCII вместе с окончаниями строк CR-LF, а программное обеспечение, использующее другие соглашения, могло выполнять перевод между локальными соглашениями и NVT. [44] Протокол передачи файлов принял протокол Telnet, включая использование сетевого виртуального терминала, для использования при передаче команд и передаче данных в режиме ASCII по умолчанию. [45] [46] Это усложняет реализацию этих протоколов и других сетевых протоколов, таких как те, которые используются для электронной почты и Всемирной паутины, в системах, не использующих соглашение NVT об окончании строки CR-LF. [47] [48]

Конец файла/потока

Монитор PDP-6 [38] и его преемник PDP-10 TOPS-10 [39] использовали control-Z (SUB) в качестве обозначения конца файла для ввода с терминала. Некоторые операционные системы, такие как CP/M, отслеживали длину файла только в единицах дисковых блоков и использовали control-Z для обозначения конца фактического текста в файле. [49] По этим причинам EOF, или конец файла , использовался в разговорной речи и традиционно как трехбуквенное сокращение для control-Z вместо SUBstitute. Символ конца текста ( ETX ), также известный как control-C , был неподходящим по ряду причин, в то время как использование control-Z в качестве управляющего символа для завершения файла аналогично положению буквы Z в конце алфавита и служит очень удобным мнемоническим средством . Исторически распространенное и до сих пор распространенное соглашение использует соглашение о символах ETX для прерывания и остановки программы посредством входного потока данных, обычно с клавиатуры.

Драйвер терминала Unix использует символ конца передачи ( EOT ), также известный как control-D, для обозначения конца потока данных.

В языке программирования C и в соглашениях Unix нулевой символ используется для завершения текстовых строк ; такие строки с нулевым символом в конце могут быть сокращенно известны как ASCIZ или ASCIIZ, где Z означает «ноль».

Таблица кодов

Таблица кодов управления

ДвоичныйоктябрьДекабрьШестигранникАббревиатураУправляющие изображения Unicode [b]Обозначение вставки [c]Последовательность C [d]Имя (1967)
196319651967
000 0000000000НУЛЕВОЙНУЛЕВОЙ^@\0 [э]Нулевой
000 0001001101СОМСАХНачало заголовка
000 0010002202ЕОАСТХНачало текста
000 0011003303МНВЭТХКонец текста
000 0100004404ЭОТ^DКонец передачи
000 0101005505ВРУENQРасследование
000 0110006606RUАСКПризнание
000 0111007707КОЛОКОЛЬЧИКБЕЛБелл
000 1000010808ФЕ0БСВозврат [f] [g]
000 1001011909ХТ/СКХТГоризонтальная табуляция [h]
000 101001210ЛФ^JПеревод строки
000 101101311ВТАБВТ\vВертикальная вкладка
000 110001412ФФФорма подачи
000 1101015130DCRВозврат каретки [i]
000 111001614ТАКСдвиг наружу
000 111101715СИСдвиг в
001 00000201610ДК0ДЛЕВыход из канала передачи данных
001 00010211711ДК1^QУправление устройством 1 (часто XON )
001 00100221812ДК2Управление устройством 2
001 00110231913ДК3Управление устройством 3 (часто XOFF )
001 01000242014DC4Управление устройством 4
001 01010252115ОШИБКАНАКОтрицательное подтверждение
001 01100262216СИНХРОНИЗАЦИЯСИНСинхронный холостой ход
001 01110272317ЛЕМЭТБ^WКонец блока передачи
001 10000302418С0МОЖЕТ^XОтмена
001 10010312519С1ЭМ^YКонец среды
001 101003226С2SSСУБ^ZЗаменять
001 101103327С3ЕСК^[[дж]Побег [к]
001 110003428С4ФС^\Разделитель файлов
001 1101035291DС5ГС^]Разделитель групп
001 111003630С6РС^^ [л]Разделитель записей
001 1111037311 этажС7НАС^_Разделитель единиц
111 1111177127ДЕЛ^?Удалить [м] [г]

Специализированное оборудование может использовать и другие представления, например, графику ISO 2047 или шестнадцатеричные числа.

Таблица символов для печати

На момент принятия коды от 20 hex до 7E hex вызывали печать видимого символа (глифа) и поэтому были обозначены как «печатаемые символы». Эти коды представляют буквы, цифры, знаки препинания и несколько различных символов. Всего существует 95 печатных символов. [n]

Пустое пространство между словами, создаваемое пробелом на клавиатуре, имеет код символа 20 hex . Поскольку символ пробела виден в печатном тексте, он считается «печатаемым символом», хотя он уникален тем, что не имеет видимого глифа. Он указан в таблице печатных символов, согласно стандарту ASCII, а не в таблице управляющих символов. [3] : 223  [10]

Код 7F hex соответствует непечатаемому управляющему символу «удалить» (DEL) и указан в таблице управляющих символов.

В более ранних версиях ASCII вместо каретки использовалась стрелка вверх (5E hex ) и стрелка влево вместо подчеркивания (5F hex ). [6] [50]

ДвоичныйоктябрьДекабрьШестигранникГлиф
196319651967
010 00000403220 пробел (нет видимого глифа)
010 00010413321!
010 00100423422"
010 00110433523#
010 01000443624$
010 01010453725%
010 01100463826&
010 01110473927'
010 10000504028(
010 10010514129)
010 101005242*
010 101105343+
010 110005444,
010 1101055452D-
010 111005646.
010 1111057472эт./
011 000006048300
011 000106149311
011 001006250322
011 001106351333
011 010006452344
011 010106553355
011 011006654366
011 011106755377
011 100007056388
011 100107157399
011 101007258:
011 101107359;
011 110007460<
011 1101075613D=
011 111007662>
011 1111077633 этаж?
100 00001006440@`@
100 00011016541А
100 00101026642Б
100 00111036743С
100 01001046844Д
100 01011056945Э
100 01101067046Ф
100 01111077147Г
100 10001107248ЧАС
100 10011117349я
100 101011274Дж.
100 101111375К
100 110011476Л
100 1101115774DМ
100 111011678Н
100 1111117794 этажО
101 00001208050П
101 00011218151В
101 00101228252Р
101 00111238353С
101 01001248454Т
101 01011258555У
101 01101268656В
101 01111278757Вт
101 10001308858Х
101 10011318959И
101 101013290З
101 101113391[
101 110013492\~\
101 1101135935D]
101 111013694^
101 111113795_
110 00001409660@`
110 00011419761а
110 00101429862б
110 00111439963с
110 010014410064г
110 010114510165е
110 011014610266ф
110 011114710367г
110 100015010468час
110 100115110569я
110 1010152106дж
110 1011153107к
110 1100154108л
110 11011551096Dм
110 1110156110н
110 1111157111о
111 000016011270п
111 000116111371д
111 001016211472г
111 001116311573с
111 010016411674т
111 010116511775ты
111 011016611876в
111 011116711977ж
111 100017012078х
111 100117112179у
111 1010172122з
111 1011173123{
111 1100174124АСК¬|
111 11011751257D}
111 1110176126ЕСК|~

Использование

ASCII впервые был использован в коммерческих целях в 1963 году как семибитный код телетайпа для сети TWX (TeletypeWriter eXchange) компании American Telephone & Telegraph . Первоначально TWX использовал более ранний пятибитный ITA2 , который также использовался конкурирующей системой телетайпа Telex . Боб Бемер представил такие функции, как escape-последовательность . [5] Его британский коллега Хью Макгрегор Росс помог популяризировать эту работу — по словам Бемера, «настолько, что код, который должен был стать ASCII, впервые был назван кодом Бемера–Росса в Европе». [51] Из-за его обширной работы над ASCII Бемера называют «отцом ASCII». [52]

11 марта 1968 года президент США Линдон Б. Джонсон постановил, что все компьютеры, приобретаемые федеральным правительством США, должны поддерживать ASCII, заявив: [53] [54] [55]

Я также одобрил рекомендации министра торговли [ Лютера Х. Ходжеса ] относительно стандартов записи стандартного кода для обмена информацией на магнитных лентах и ​​бумажных лентах при их использовании в компьютерных операциях. Все компьютеры и сопутствующие конфигурации оборудования, внесенные в инвентарь Федерального правительства с 1 июля 1969 года, должны иметь возможность использовать стандартный код для обмена информацией и форматы, предписанные стандартами магнитной ленты и бумажной ленты при использовании этих носителей.

ASCII была самой распространённой кодировкой символов во Всемирной паутине до декабря 2007 года, пока её не превзошла кодировка UTF-8 ; UTF-8 обратно совместима с ASCII. [56] [57] [58]

Варианты и производные

По мере распространения компьютерных технологий по всему миру различные организации по стандартизации и корпорации разработали множество вариаций ASCII для облегчения выражения неанглийских языков, использующих алфавиты на основе латиницы. Некоторые из этих вариаций можно было бы классифицировать как « расширения ASCII », хотя некоторые неправильно используют этот термин для обозначения всех вариантов, включая те, которые не сохраняют таблицу символов ASCII в 7-битном диапазоне. Более того, расширения ASCII также были неправильно обозначены как ASCII.

7-битные коды

С самого начала своей разработки [59] ASCII задумывался как всего лишь один из нескольких национальных вариантов международного стандарта кодировки символов.

Другие международные органы по стандартизации ратифицировали кодировки символов, такие как ISO 646 (1967), которые идентичны или почти идентичны ASCII, с расширениями для символов за пределами английского алфавита и символов, используемых за пределами Соединенных Штатов, таких как символ фунта стерлингов Соединенного Королевства (£); например, с кодовой страницей 1104. Почти каждой стране требовалась адаптированная версия ASCII, поскольку ASCII соответствовала потребностям только США и нескольких других стран. Например, у Канады была своя версия, которая поддерживала французские символы.

Во многих других странах были разработаны варианты ASCII, включающие неанглийские буквы (например, é , ñ , ß , Ł ), символы валют (например, £ , ¥ ) и т. д. См. также YUSCII (Югославия).

Он бы разделял большинство общих символов, но назначал бы другие локально полезные символы нескольким кодовым точкам, зарезервированным для «национального использования». Однако четыре года, прошедшие между публикацией ASCII-1963 и первым принятием ISO международной рекомендации в 1967 году [60], привели к тому, что выбор ASCII для национальных символов стал фактическим стандартом для всего мира, что вызвало путаницу и несовместимость, когда другие страны начали делать свои собственные назначения для этих кодовых точек.

ISO/IEC 646, как и ASCII, представляет собой 7-битный набор символов. Он не предоставляет никаких дополнительных кодов, поэтому одни и те же кодовые точки кодировали разные символы в разных странах. Escape-коды были определены для указания того, какой национальный вариант применяется к фрагменту текста, но они редко использовались, поэтому часто было невозможно узнать, с каким вариантом работать и, следовательно, какой символ представляет код, и в целом системы обработки текста могли справиться только с одним вариантом.

Поскольку символы квадратных и фигурных скобок ASCII были назначены кодовым точкам «национального использования», которые использовались для букв с диакритическими знаками в других национальных вариантах ISO/IEC 646, немецкий, французский, шведский и т. д. программист, использующий свой национальный вариант ISO/IEC 646, а не ASCII, должен был написать и, следовательно, прочитать что-то вроде

ä aÄiÜ = 'Ön'; ü

вместо

{ a[i] = '\n'; }

Триграфы C были созданы для решения этой проблемы для ANSI C , хотя их позднее введение и непоследовательная реализация в компиляторах ограничивали их использование. Многие программисты использовали на своих компьютерах ASCII, поэтому простой текст на шведском, немецком и т. д. (например, в электронной почте или Usenet ) содержал "{, }" и подобные варианты в середине слов, к чему эти программисты привыкли. Например, шведский программист, отправляющий другому программисту письмо с вопросом, не пойти ли ему на обед, мог получить в качестве ответа "N{ jag har sm|rg}sar", что должно было быть "Nä jag har smörgåsar", что означает "Нет, у меня есть сэндвичи".

В Японии и Корее, по состоянию на 2020-е годы, [обновлять]используется вариация ASCII, в которой обратная косая черта (шестнадцатеричный код 5C) отображается как ¥ ( знак иены в Японии) или ₩ ( знак воны в Корее). Это означает, что, например, путь к файлу C:\Users\Smith отображается как C:¥Users¥Smith (в Японии) или C:₩Users₩Smith (в Корее).

В Европе наборы символов телетекста , которые являются вариантами ASCII, используются для субтитров вещательного телевидения, определенных Всемирной системой телетекста и транслируемых с использованием стандарта DVB-TXT для встраивания телетекста в передачи DVB. [61] В случае, если субтитры изначально были созданы для телетекста и преобразованы, производные форматы субтитров ограничены теми же наборами символов.

8-битные коды

В конце концов, когда 8-, 16- и 32-битные (а позже и 64-битные ) компьютеры начали заменять 12- , 18- и 36-битные компьютеры в качестве нормы, стало обычным использовать 8-битный байт для хранения каждого символа в памяти, предоставляя возможность для расширенных 8-битных родственников ASCII. В большинстве случаев они развивались как истинные расширения ASCII, оставляя исходное отображение символов нетронутым, но добавляя дополнительные определения символов после первых 128 (т. е. 7-битных) символов. Сам ASCII оставался семибитным кодом: термин «расширенный ASCII» не имеет официального статуса.

Для некоторых стран были разработаны 8-битные расширения ASCII, включающие поддержку символов, используемых в местных языках; например, ISCII для Индии и VISCII для Вьетнама. Компьютеры Kaypro CP/M использовали «верхние» 128 символов для греческого алфавита. [ необходима цитата ]

Даже для рынков, где не было необходимости добавлять много символов для поддержки дополнительных языков, производители ранних домашних компьютерных систем часто разрабатывали собственные 8-битные расширения ASCII для включения дополнительных символов, таких как символы рисования коробок , полуграфика и спрайты видеоигр . Часто эти дополнения также заменяли управляющие символы (индексы от 0 до 31, а также индекс 127) на еще более специфичные для платформы расширения. В других случаях дополнительный бит использовался для какой-то другой цели, например, для переключения инверсного видео ; этот подход использовался ATASCII , расширением ASCII, разработанным Atari .

Большинство расширений ASCII основаны на ASCII-1967 (текущий стандарт), но некоторые расширения основаны на более раннем ASCII-1963. Например, PETSCII , разработанный Commodore International для их 8-битных систем, основан на ASCII-1963. Аналогично, многие наборы символов Sharp MZ основаны на ASCII-1963.

IBM определила кодовую страницу 437 для IBM PC , заменив управляющие символы графическими символами, такими как смайлики , и сопоставив дополнительные графические символы с верхними 128 позициями. [62] Digital Equipment Corporation разработала набор многонациональных символов (DEC-MCS) для использования в популярном терминале VT220 как одно из первых расширений, предназначенных больше для международных языков, чем для блочной графики. Apple определила Mac OS Roman для Macintosh, а Adobe определила стандартную кодировку PostScript для PostScript ; оба набора содержали «международные» буквы, типографские символы и знаки препинания вместо графики, больше похожие на современные наборы символов.

Стандарт ISO/IEC 8859 (выведенный из DEC-MCS) предоставил стандарт, который большинство систем скопировали (или, по крайней мере, основывались на нем, когда не копировали в точности). Популярное дальнейшее расширение, разработанное Microsoft, Windows-1252 (часто ошибочно называемое ISO-8859-1 ), добавило типографские знаки препинания, необходимые для традиционной текстовой печати. ​​ISO-8859-1, Windows-1252 и оригинальный 7-битный ASCII были наиболее распространенными методами кодирования символов во Всемирной паутине до 2008 года, когда их обогнал UTF-8 . [57]

ISO/IEC 4873 ввел 32 дополнительных управляющих кода, определенных в шестнадцатеричном диапазоне 80–9F, как часть расширения 7-битной кодировки ASCII до 8-битной системы. [63]

Юникод

Unicode и универсальный набор символов ISO/IEC 10646 (UCS) имеют гораздо более широкий набор символов, и их различные формы кодирования начали быстро вытеснять ISO/IEC 8859 и ASCII во многих средах. В то время как ASCII ограничен 128 символами, Unicode и UCS поддерживают больше символов, разделяя концепции уникальной идентификации (используя натуральные числа, называемые кодовыми точками ) и кодирования (в 8-, 16- или 32-битные двоичные форматы, называемые UTF-8 , UTF-16 и UTF-32 соответственно).

ASCII был включен в набор символов Unicode (1991) как первые 128 символов, поэтому 7-битные символы ASCII имеют одинаковые числовые коды в обоих наборах. Это позволяет UTF-8 быть обратно совместимым с 7-битным ASCII, поскольку файл UTF-8, содержащий только символы ASCII, идентичен файлу ASCII, содержащему ту же последовательность символов. Еще важнее то, что обеспечивается прямая совместимость , поскольку программное обеспечение, которое распознает только 7-битные символы ASCII как специальные и не изменяет байты с наивысшим набором бит (как это часто делается для поддержки 8-битных расширений ASCII, таких как ISO-8859-1), сохранит данные UTF-8 неизменными. [64]

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

Примечания

  1. ^ abcde 128 символов 7-битного набора символов ASCII делятся на восемь групп по 16 символов, называемых палочками 0–7, которые связаны с тремя наиболее значимыми битами . [15] В зависимости от горизонтального или вертикального представления таблицы символов палочки могут соответствовать либо строкам, либо столбцам таблицы.
  2. ^ Символы Unicode из области "Control Pictures" U+2400 - U+2421 зарезервированы для представления управляющих символов, когда необходимо напечатать или отобразить их, а не заставить их выполнять свою предполагаемую функцию. Некоторые браузеры могут отображать их неправильно.
  3. ^ Обозначение вставки часто используется для представления управляющих символов на терминале. На большинстве текстовых терминалов удерживание клавиши при вводе второго символа приведет к вводу управляющего символа. Иногда клавиша Shift не нужна, например, можно набрать только Ctrl+2 или Ctrl+Space.Ctrl^@
  4. ^ Последовательности экранирования символов в языке программирования C и многих других языках, на которые он оказал влияние, таких как Java и Perl (хотя не все реализации обязательно поддерживают все последовательности экранирования).
  5. ^ Ввод любого однобайтового символа поддерживается путем экранирования его восьмеричного значения. Однако из-за роли NULL в C-строках этот случай имеет особое применение.
  6. ^ В некоторых системах символ Backspace можно также ввести, нажав клавишу.← Backspace
  7. ^ ab Неоднозначность Backspace обусловлена ​​тем, что ранние терминалы были спроектированы с учетом того, что основным назначением клавиатуры будет ручная перфорация бумажной ленты без подключения к компьютеру. Чтобы удалить предыдущий символ, нужно было сделать резервную копию перфоратора бумажной ленты, что по механическим причинам и причинам простоты было кнопкой на самом перфораторе, а не на клавиатуре, а затем набрать символ rubout. Поэтому они поместили клавишу, производящую rubout, в место, используемое на пишущих машинках для backspace. Когда системы использовали эти терминалы и обеспечивали редактирование командной строки, им приходилось использовать код «rubout» для выполнения backspace и часто не интерпретировали символ backspace (они могли отображать « ^H » для backspace). Другие терминалы, не предназначенные для бумажной ленты, заставляли клавишу в этом месте производить Backspace, а системы, предназначенные для них, использовали этот символ для резервного копирования. Поскольку код удаления часто производил эффект backspace, это также вынуждало производителей терминалов заставлять любую клавишу производить что-то другое, нежели символ Delete.Delete
  8. ^ В большинстве систем символ табуляции можно также ввести, нажав клавишу.Tab ↹
  9. ^ Символ возврата каретки также можно ввести, нажав клавишу или в большинстве систем.↵ EnterReturn
  10. ^ Последовательность \e не является частью спецификаций ISO C и многих других языков. Однако она понимается несколькими компиляторами, включая GCC .
  11. ^ В некоторых системах символ Escape также можно ввести, нажав клавишу.Esc
  12. ^ ^^ означает + (нажатие клавиши «Ctrl» и клавиши курсора ).Ctrl^
  13. ^ В некоторых системах символ удаления иногда можно ввести, нажав клавишу.← Backspace
  14. ^ В распечатанном виде символы следующие:
     !"#$%&'()*+,-./0123456789:;<=>?​@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_​`abcdefghijklmnopqrstuvwxyz{|}~

Ссылки

  1. ^ ANSI (1 декабря 1975 г.). ISO-IR-6: Набор графических символов ASCII (PDF) . ITSCJ/ IPSJ .
  2. ^ ab "Наборы символов". Internet Assigned Numbers Authority (IANA) . 2007-05-14 . Получено 2019-08-25 .
  3. ^ abcdefghijklmnopqrs Mackenzie, Charles E. (1980). Coded Character Sets, History and Development (PDF) . The Systems Programming Series (1-е изд.). Addison-Wesley Publishing Company, Inc. стр. 6, 66, 211, 215, 217, 220, 223, 228, 236– 238, 243– 245, 247– 253, 423, 425– 428, 435– 439. ISBN 978-0-201-14460-4. LCCN  77-90165. Архивировано (PDF) из оригинала 26 мая 2016 г. Получено 25 августа 2019 г.
  4. ^ "Milestone-Proposal:ASCII Milestone - IEEE NJ Coast Section". IEEE Milestones Wiki . 2016-03-29 . Получено 2024-02-26 .
  5. ^ ab Brandel, Mary (1999-07-06). "1963: The Debut of ASCII". CNN . Архивировано из оригинала 2013-06-17 . Получено 2008-04-14 .
  6. ^ abcd "Американский стандартный код для обмена информацией, ASA X3.4-1963". Sensitive Research . Американская ассоциация стандартов . 1963-06-17 . Получено 2020-06-06 .
  7. ^ abc Стандартный код США для обмена информацией, USAS X3.4-1967 (Технический отчет). Институт стандартов Соединенных Штатов Америки . 1967-07-07.
  8. ^ Дженнингс, Томас Дэниел (2016-04-20) [1999]. "Аннотированная история некоторых кодов символов или ASCII: Американский стандартный код для проникновения информации". Sensitive Research (SR-IX) . Получено 2020-03-08 .
  9. ^ abcd Американский национальный стандарт для информационных систем — Наборы кодированных символов — 7-битный Американский национальный стандартный код для обмена информацией (7-битный ASCII), ANSI X3.4-1986 (Технический отчет). Американский национальный институт стандартов (ANSI). 1986-03-26.
  10. ^ ab Cerf, Vint (1969-10-16). Формат ASCII для сетевого обмена. Сетевая рабочая группа. doi : 10.17487/RFC0020 . RFC 20 . Получено 2016-06-13 .(Примечание. Практически идентичная формулировка с USAS X3.4-1968, за исключением вступления.)
  11. ^ Барри Лейба (2015-01-12). «Правильная классификация RFC 20 (формат ASCII) в соответствии со стандартом Интернета». IETF .
  12. ^ Ширли, Р. (август 2007 г.). Глоссарий по безопасности Интернета, версия 2. doi : 10.17487/RFC4949 . RFC 4949. Получено 13 июня 2016 г.
  13. ^ Майни, Анил Кумар (2007). Цифровая электроника: принципы, устройства и приложения. John Wiley and Sons . стр. 28. ISBN 978-0-470-03214-5. Кроме того, он определяет коды для 33 непечатаемых, в основном устаревших управляющих символов, которые влияют на обработку текста.
  14. Bukstein, Ed (июль 1964). «Двоичные компьютерные коды и ASCII». Electronics World . 72 (1): 28– 29. Архивировано из оригинала 2016-03-03 . Получено 2016-05-22 .
  15. ^ abcdef Бемер, Роберт Уильям (1980). "Глава 1: Внутри ASCII" (PDF) . Программное обеспечение общего назначения . Лучшее из века интерфейсов. Том 2. Портленд, штат Орегон, США: dilithium Press. стр.  1– 50. ISBN 978-0-918398-37-6. LCCN  79-67462. Архивировано из оригинала 2016-08-27 . Получено 2016-08-27 ,от:
  16. Краткий отчет: Заседание рабочей группы МККТТ по новому телеграфному алфавиту, 13–15 мая 1963 г.
  17. Отчет ISO/TC/97/SC 2 – Заседание 29–31 октября 1963 г.
  18. Отчет целевой группы X3.2.4, 11 июня 1963 г., здание Пентагона, Вашингтон, округ Колумбия.
  19. Отчет о заседании № 8, Целевая группа X3.2.4, 17 и 18 декабря 1963 г.
  20. ^ abc Winter, Dik T. (2010) [2003]. "Американские и международные стандарты: ASCII". Архивировано из оригинала 2010-01-16.
  21. ^ ab Стандартный код США для обмена информацией, USAS X3.4-1968 (Технический отчет). Институт стандартов Соединенных Штатов Америки . 10 октября 1968 г.
  22. ^ abcdefg Salste, Tuomas (январь 2016 г.). "7-битные наборы символов: пересмотры ASCII". Aivosto Oy. urn : nbn:fi-fe201201011004. Архивировано из оригинала 2016-06-13 . Получено 2016-06-13 .
  23. ^ "Информация". Scientific American (специальный выпуск). 215 (3). Сентябрь 1966. JSTOR  e24931041.
  24. ^ Корпела, Юкка К. (2014-03-14) [2006-06-07]. Unicode Explained – Internationalize Documents, Programs, and Web Sites (2-й выпуск 1-го издания). O'Reilly Media, Inc. стр. 118. ISBN 978-0-596-10121-3.
  25. ^ ANSI INCITS 4-1986 (R2007): Американский национальный стандарт для информационных систем – Наборы кодированных символов – 7-битный американский национальный стандартный код для обмена информацией (7-битный ASCII) , 2007 [1986]
  26. ^ "INCITS 4-1986[R2012]: Информационные системы - Наборы кодированных символов - 7-битный Американский национальный стандартный код для обмена информацией (7-битный ASCII)". 2012-06-15. Архивировано из оригинала 2020-02-28 . Получено 2020-02-28 .
  27. ^ "INCITS 4-1986[R2017]: Информационные системы - Наборы кодированных символов - 7-битный Американский национальный стандартный код для обмена информацией (7-битный ASCII)". 2017-11-02 [2017-06-09]. Архивировано из оригинала 2020-02-28 . Получено 2020-02-28 .
  28. ^ "INCITS 4-1986 (R2022)" . веб-магазин.ansi.org .
  29. ^ Последовательность бит Американского национального стандартного кода для обмена информацией при последовательной передаче данных , Американский национальный институт стандартов (ANSI), 1966, X3.15-1966
  30. ^ "Telegraph Regulations and Final Protocol (Madrid, 1932)" (PDF) . Архивировано из оригинала 2023-08-21 . Получено 2024-06-09 .
  31. ^ ab Smith, Gil (2001). "Коды телетайпной связи" (PDF) . Baudot.net. Архивировано (PDF) из оригинала 2008-08-20 . Получено 11-07-2008 .
  32. ^ Сойер, Стэнли А.; Кранц, Стивен Джордж (1995). Учебник TeX для ученых. CRC Press . стр. 13. Bibcode : 1995tps..book.....S. ISBN 978-0-8493-7159-2. Архивировано из оригинала 2016-12-22 . Получено 2016-10-29 .
  33. ^ Savard, John JG "Computer Keyboards". Архивировано из оригинала 2014-09-24 . Получено 2014-08-24 .
  34. ^ "ASCIIbetical definition". PC Magazine . Архивировано из оригинала 2013-03-09 . Получено 2008-04-14 .
  35. ^ Резник, Питер У., ред. (апрель 2001 г.). Формат сообщений в Интернете. doi : 10.17487/RFC2822 . RFC 2822 . Получено 13 июня 2016 г. .(Примечание. NO-WS-CTL.)
  36. ^ Макконнелл, Роберт; Хейнс, Джеймс; Уоррен, Ричард. «Понимание кодов ASCII». Архивировано из оригинала 27.02.2014 . Получено 11.05.2014 .
  37. ^ Барри Марголин (29.05.2014). "Re: история редактора и текстового процессора (было: Re: RTF для emacs)". help-gnu-emacs (список рассылки). Архивировано из оригинала 14.07.2014 . Получено 11.07.2014 .
  38. ^ ab "PDP-6 Multiprogramming System Manual" (PDF) . Digital Equipment Corporation (DEC). 1965. стр. 43. Архивировано (PDF) из оригинала 2014-07-14 . Получено 2014-07-10 .
  39. ^ ab "Справочник PDP-10, Книга 3, Связь с монитором" (PDF) . Digital Equipment Corporation (DEC). 1969. стр. 5-5. Архивировано (PDF) из оригинала 2011-11-15 . Получено 2014-07-10 .
  40. ^ "Справка - Руководство по GNU Emacs". Архивировано из оригинала 2018-07-11 . Получено 2018-07-11 .
  41. ^ "ANSI X3.64-1979" (PDF) . Получено 2024-10-27 .
  42. ^ Тим Патерсон (2007-08-08). "Является ли DOS плагиатом CP/M?". DosMan Drivel . Архивировано из оригинала 20-04-2018 . Получено 19-04-2018 .
  43. ^ Ossanna, JF ; Saltzer, JH (17–19 ноября 1970 г.). «Технические и инженерные проблемы человека при подключении терминалов к системе с разделением времени» (PDF) . Труды 17–19 ноября 1970 г., Fall Joint Computer Conference (FJCC) . AFIPS Press. стр.  355–362 . Архивировано (PDF) из оригинала 2012-08-19 . Получено 2013-01-29 . Использование функции «новой строки» (комбинированный возврат каретки и перевод строки) проще как для человека, так и для машины, чем требование обеих функций для начала новой строки; Американский национальный стандарт X3.4-1968 разрешает коду перевода строки нести значение новой строки.
  44. ^ О'Салливан, Т. (1971-05-19). Протокол TELNET. Internet Engineering Task Force (IETF). стр. 4–5. doi : 10.17487/RFC0158 . RFC 158 . Получено 28.01.2013 .
  45. ^ Нейгус, Нэнси Дж. (1973-08-12). Протокол передачи файлов. Internet Engineering Task Force (IETF). doi : 10.17487/RFC0542 . RFC 542. Получено 28.01.2013 .
  46. ^ Постел, Джон (июнь 1980 г.). Протокол передачи файлов. Internet Engineering Task Force (IETF). doi : 10.17487/RFC0765 . RFC 765. Получено 28.01.2013 .
  47. ^ "EOL translation plan for Mercurial". Mercurial. Архивировано из оригинала 2016-06-16 . Получено 2017-06-24 .
  48. ^ Бернстайн, Дэниел Дж. "Голые LF в SMTP". Архивировано из оригинала 29-10-2011 . Получено 28-01-2013 .
  49. ^ Руководство по интерфейсу CP/M 1.4 (PDF) . Цифровые исследования . 1978. стр. 10. Архивировано (PDF) из оригинала 2019-05-29 . Получено 2017-10-07 .
  50. ^ Хейнс, Джим (13.01.2015). "Из первых рук: Чад — наш самый важный продукт: воспоминания инженера о Teletype Corporation". Engineering and Technology History Wiki (ETHW) . Получено 14.02.2023 . Произошел переход с ASCII 1961 года на ASCII 1968 года. Некоторые компьютерные языки использовали символы в ASCII 1961 года, такие как стрелка вверх и стрелка влево. Эти символы исчезли из ASCII 1968 года. Мы работали с Фредом Мокингом, который к тому времени работал в отделе продаж в Teletype , над цилиндром набора, который бы скомпрометировал изменяющиеся символы, чтобы значения ASCII 1961 года не были полностью утеряны. Символ подчеркивания был сделан довольно клиновидным, чтобы он также мог служить стрелкой влево.
  51. ^ Бемер, Роберт Уильям . «Бемер встречает Европу (компьютерные стандарты) – виньетки компьютерной истории». Trailing-edge.com. Архивировано из оригинала 2013-10-17 . Получено 2008-04-14 .(Примечание. В то время Бемер работал в IBM .)
  52. ^ "Роберт Уильям Бемер: Биография". 2013-03-09. Архивировано из оригинала 2016-06-16.
  53. ^ Джонсон, Линдон Бейнс (1968-03-11). «Меморандум об одобрении принятия федеральным правительством стандартного кода для обмена информацией». Проект американского президентства. Архивировано из оригинала 2007-09-14 . Получено 2008-04-14 .
  54. ^ Ричард С. Шуфорд (1996-12-20). "Re: Ранняя история ASCII?". Группа новостей : alt.folklore.computers. Usenet:  Pine.SUN.3.91.961220100220.13180C-100000@duncan.cs.utk.edu.
  55. ^ Folts, Harold C.; Karp, Harry, ред. (1982-02-01). Compilation of Data Communications Standards (2nd revisioned ed.). McGraw-Hill Inc. ISBN  978-0-07-021457-6.
  56. ^ Дубост, Карл (2008-05-06). "UTF-8 Growth on the Web". Блог W3C . Консорциум World Wide Web . Архивировано из оригинала 2016-06-16 . Получено 2010-08-15 .
  57. ^ ab Davis, Mark (2008-05-05). "Переход на Unicode 5.1". Официальный блог Google . Архивировано из оригинала 2016-06-16 . Получено 2010-08-15 .
  58. ^ Дэвис, Марк (28.01.2010). «Unicode приближается к 50% Интернета». Официальный блог Google . Архивировано из оригинала 16.06.2016 . Получено 15.08.2010 .
  59. ^ «Особые критерии», приложение к меморандуму от RW Reach, «X3-2 Meeting – September 14 and 15», 18 сентября 1961 г.
  60. ^ Марешаль, Р. (1967-12-22), ISO/TC 97 – Компьютеры и обработка информации: принятие проекта Рекомендации ISO № 1052
  61. ^ «Спецификация DVB-TXT (Телетекст) для передачи телетекста Системы B ITU-R в битовых потоках DVB».
  62. ^ Технический справочник (PDF) . Библиотека справочника по аппаратному обеспечению персональных компьютеров (первое издание). IBM. Август 1981 г. Приложение C. О символах, нажатиях клавиш и цвете.
  63. ^ Консорциум Unicode (2006-10-27). "Глава 13: Специальные области и символы формата" (PDF) . В Allen, Julie D. (ред.). Стандарт Unicode, версия 5.0 . Upper Saddle River, Нью-Джерси, США: Addison-Wesley Professional . стр. 314. ISBN 978-0-321-48091-0. Архивировано (PDF) из оригинала 2022-10-09 . Получено 2015-03-13 .
  64. ^ "utf-8(7) – Linux manual page". Man7.org. 2014-02-26. Архивировано из оригинала 2014-04-22 . Получено 2014-04-21 .

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

  • Бемер, Роберт Уильям (1960). «Предложение о совместимости кодов символов». Сообщения ACM . 3 (2): 71– 72. doi : 10.1145/366959.366961 . S2CID  9591147.
  • Бемер, Роберт Уильям (2003-05-23). ​​"Вавилон кодов до ASCII: обзор кодированных наборов символов 1960 года: причины для ASCII". Архивировано из оригинала 2013-10-17 . Получено 2016-05-09 ,от:
  • "Американский национальный стандартный код для обмена информацией | ANSI X3.4-1977" (PDF) . Национальный институт стандартов. 1977. Архивировано (PDF) из оригинала 2022-10-09. (факсимильный, не машиночитаемый)
  • Робинсон, Г. С.; Каргилл, К. (1996). «История и влияние компьютерных стандартов». Компьютер . Т. 29, № 10. С.  79–85 . doi :10.1109/2.539725.
  • Mullendore, Ralph Elvin (1964) [1963]. Ptak, John F. (ред.). «О раннем развитии ASCII – История ASCII». JF Ptak Science Books (опубликовано в марте 2012 г.). Архивировано из оригинала 2016-05-26 . Получено 2016-05-26 .
  • "C0 Controls and Basic Latin – Range: 0000–007F" (PDF) . Стандарт Unicode 8.0 . Unicode, Inc. 2015 [1991]. Архивировано (PDF) из оригинала 2016-05-26 . Получено 2016-05-26 .
Взято с "https://en.wikipedia.org/w/index.php?title=ASCII&oldid=1268373038"