ASCII: различия между версиями
imported>VitalikBot м Обновление шаблона {{improve}}; langs: en |
imported>DenisKrivosheev Нет описания правки |
||
| Строка 1: | Строка 1: | ||
{{ | {{другие значения}} | ||
= {{- | {{falseredirect|ISO 646}} | ||
{{Технологический стандарт}} | |||
'''ASCII''' ({{lang-en|'''A'''merican '''S'''tandard '''C'''ode for '''I'''nformation '''I'''nterchange}}, произносится {{IPAc-en|audio=En-us-ASCII.ogg|ˈ|æ|s|k|i}}<ref>{{Cite web|url=http://dictionary.cambridge.org/dictionary/english/ascii?q=ASCII|title=ASCII|website=The Cambridge English Dictionary|publisher=dictionary.cambridge.org|lang=en|access-date=2018-04-09|archive-date=2017-09-27|archive-url=https://web.archive.org/web/20170927202158/http://dictionary.cambridge.org/dictionary/english/ascii?q=ASCII|url-status=live}}</ref>) — стандарт кодирования букв [[латиница|латинского алфавита]], цифр, некоторых специальных знаков и [[Управляющие символы|управляющих символов]], принятый в 1963 году [[Американский национальный институт стандартов|Американской ассоциацией стандартов]] как основной способ представления текстовых данных в [[ЭВМ]]{{sfn|Mackenzie|1980|p=211}}. | |||
=== | Во избежание путаницы с используемыми в других странах [[#Национальные варианты и расширения|национальными кодами]], основанными на ASCII, [[IANA]] рекомендует обозначать оригинальный код как US-ASCII<ref>{{cite web |author=[[Internet Assigned Numbers Authority]] |url=https://www.iana.org/assignments/character-sets/character-sets.xhtml |title=Character Sets |lang=en |access-date=2024-11-18 |url-status=live |archive-url=https://web.archive.org/web/20241116085551/https://www.iana.org/assignments/character-sets/character-sets.xhtml |archive-date=2024-11-16}}</ref>. | ||
=== | ASCII представляет собой набор из 128 кодов символов, каждому из которых соответствует 7-[[бит]]овое [[двоичное число]]. Его введение позволило упростить обмен данными между разными компьютерными системами. Европейской модификацией ASCII является стандарт [[Latin 1]], российской — [[КОИ-7]]<ref>{{БРЭ|статья=Информации представление в ЭВМ|ссылка=https://old.bigenc.ru/technology_and_technique/text/2015817}}</ref>. | ||
{{ | == Описание == | ||
[[Файл:ASCII Code Chart.svg|thumb|369x369px|Кодовая таблица ASCII]] | |||
Стандарт ASCII представляет собой 7-[[бит]]ный код без рекомендаций относительно контроля чётности, содержащий 2<sup>7</sup> = 128 кодовых позиций{{sfn|Иллингуорт|1990|с=28}}, в которых размещены следующие символы: | |||
* [[Десятичная система счисления|десятичные цифры]]; | |||
* [[Латинский алфавит|латинские буквы]]; | |||
* [[Знак препинания|знаки препинания]]; | |||
* [[Небуквенный орфографический знак|орфографические знаки]]; | |||
* [[Диакритический знак|диакритические знаки]]; | |||
* [[математические символы]]; | |||
* [[управляющие символы]]. | |||
== | == История == | ||
{{ | С развитием [[Вычислительная техника|вычислительной техники]] и [[Язык программирования|языков программирования]] возможностей [[телетайп]]ного кода [[ITA2]] стало не хватать, что вынуждало производителей ЭВМ создавать расширения для ITA2 или же свои собственные коды. Кроме того, для записи на [[Перфокарта|перфокарты]] использовались различные варианты [[Код Холлерита|кода Холлерита]]. Таким образом, к началу {{s|1960-х}} годов существовало достаточно большое количество кодировок латиницы, используемых как для передачи по линиям связи, так и для записи на носители — магнитную ленту, перфоленту и перфокарты, — таких как ITA2, {{iw|Fieldata}}, различные варианты [[BCDIC]] и т. д.{{sfn|Mackenzie|1980|p=61}}, причём даже в рамках одной и той же кодировки один код мог соответствовать различным символам в зависимости от модели и назначения устройства. Чтобы решить эту проблему, 4 августа 1960 года был создан комитет X3.2 (как часть комитета X3, сформированного 13 января того же года){{sfn|Fischer|2000|p=11}}, в который вошли представители компаний [[IBM]] (в частности, {{iw|Бемер, Роберт Уильям|Роберт Бемер|en|Bob Bemer}}), [[AT&T]], [[Bell Labs]] и других. | ||
Работа по созданию ASCII началась 6 октября 1960 года{{sfn|Fischer|2000|p=11}}, и 17 июня 1963 года, почти 3 года спустя, была опубликована его первая редакция (ASA X3.4—1963){{sfn|Fischer|2000|p=21}}. В ней отсутствовали [[Строчная буква|строчные буквы]], а область из 28 кодовых позиций {{0x|60}}—{{0x|7B}} была зарезервирована для дальнейшего использования{{sfn|Mackenzie|1980|p=66}}{{sfn|Mackenzie|1980|p=245—246}}. Велись споры о том, как использовать эту область — для добавления строчных букв или же управляющих символов. | |||
== | В 1965 году была подготовлена новая редакция ASCII (ASA X3.4—1965), которая, однако, так и не была опубликована и не использовалась нигде, кроме терминалов [[IBM 2260|IBM 2260/2848]] и принтеров IBM 1053 (да и то без строчных букв и некоторых других символов){{sfn|Mackenzie|1980|p=423—428}}. Следующая редакция ASCII (USAS X3.4—1967) была опубликована 5 июля 1967 года и определила окончательную кодовую таблицу{{sfn|Fischer|2000|p=28}}. Новые редакции ASCII продолжили выходить и далее (USAS X3.4—1968, ANSI X3.4—1977, ANSI X3.4—1986 и т. д.), однако кодовую таблицу изменения в них более не затрагивали. | ||
= | Компания IBM первое время саботировала внедрение ASCII. В ней отдавали предпочтение собственной кодировке [[EBCDIC]], являющейся дальнейшим развитием кодировки BCDIC, также созданной IBM и основанной, в свою очередь, на коде Холлерита{{sfn|Fischer|2000|p=21}}. | ||
==== | == Структурные свойства таблицы == | ||
# | Первая редакция ASCII содержала 36 управляющих символов, пробел, 10 арабских цифр, 26 заглавных латинских букв и 27 специальных символов, подразделяемых на группы{{sfn|Mackenzie|1980|p=240}}: | ||
* 8 знаков препинания (<code>.</code>, <code>,</code>, <code>:</code>, <code>;</code>, <code>!</code>, <code>?</code>, <code>'</code>, <code>"</code>); | |||
* 5 знаков для финансовых и биржевых операций (<code>#</code>, <code>$</code>, <code>%</code>, <code>&</code>, <code>@</code>); | |||
* 2 пары скобок (<code>(</code>, <code>)</code>, <code>[</code>, <code>]</code>); | |||
* 8 математических символов (<code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>, <code>\</code>, <code>=</code>, <code><</code>, <code>></code>){{efn|В качестве знаков арифметических операций [[Умножение|умножения]] и [[Деление (математика)|деления]] было решено использовать [[Звёздочка (типографика)|звёздочку]] (*) и [[Косая черта|косую черту]] (/), а не специализированный [[знак умножения]] (×) и [[обелюс]] (÷). [[Обратная косая черта]] (\) была введена в пару к прямой как составная часть операторов [[Конъюнкция|конъюнкции]] (<math>\land</math>) и [[Дизъюнкция|дизъюнкции]] (<math>\lor</math>).}}; | |||
* 2 стрелки для блок-схем (<code>↑</code>, <code>←</code>). | |||
Символ «подушка» (<code>⌑</code>), имевшийся в наборе доступных символов многих печатающих устройств того времени и присутствовавший в кодировках BCDIC, Fieldata и др., ни в одну из редакций ASCII не вошёл. | |||
{ | В редакции 1967 года был пересмотрен (сокращён до 33) набор управляющих символов и убраны стрелки, а также добавлены строчные буквы и 7 дополнительных символов (<code>^</code>, <code>_</code>, <code>`</code>, <code>{</code>, <code>|</code>, <code>}</code>, <code>~</code>), после чего кодовая таблица приняла окончательный вид{{sfn|Mackenzie|1980|p=246—247}}: | ||
= {{- | {| class="wikitable" style="text-align: center;" | ||
|+ {{sans-serif|Кодовая таблица ASCII (начиная с редакции USAS X3.4—1967)}} | |||
| | |||
! scope="col" style="width: 2.5em;" | .0 | |||
! scope="col" style="width: 2.5em;" | .1 | |||
! scope="col" style="width: 2.5em;" | .2 | |||
! scope="col" style="width: 2.5em;" | .3 | |||
! scope="col" style="width: 2.5em;" | .4 | |||
! scope="col" style="width: 2.5em;" | .5 | |||
! scope="col" style="width: 2.5em;" | .6 | |||
! scope="col" style="width: 2.5em;" | .7 | |||
! scope="col" style="width: 2.5em;" | .8 | |||
! scope="col" style="width: 2.5em;" | .9 | |||
! scope="col" style="width: 2.5em;" | .A | |||
! scope="col" style="width: 2.5em;" | .B | |||
! scope="col" style="width: 2.5em;" | .C | |||
! scope="col" style="width: 2.5em;" | .D | |||
! scope="col" style="width: 2.5em;" | .E | |||
! scope="col" style="width: 2.5em;" | .F | |||
|- | |||
! scope="row" | 0. | |||
| [[#NUL|NUL]] | |||
| [[#SOH|SOH]] | |||
| [[#STX|STX]] | |||
| [[#ETX|ETX]] | |||
| [[#EOT|EOT]] | |||
| [[#ENQ|ENQ]] | |||
| [[#ACK|ACK]] | |||
| [[#BEL|BEL]] | |||
| [[#BS|BS]] | |||
| [[#HT|HT]] | |||
| [[#LF|LF]] | |||
| [[#VT|VT]] | |||
| [[#FF|FF]] | |||
| [[#CR|CR]] | |||
| [[#SO|SO]] | |||
| [[#SI|SI]] | |||
|- | |||
! scope="row" | 1. | |||
| [[#DLE|DLE]] | |||
| [[#DC1|DC1]] | |||
| [[#DC2|DC2]] | |||
| [[#DC3|DC3]] | |||
| [[#DC4|DC4]] | |||
| [[#NAK|NAK]] | |||
| [[#SYN|SYN]] | |||
| [[#ETB|ETB]] | |||
| [[#CAN|CAN]] | |||
| [[#EM|EM]] | |||
| [[#SUB|SUB]] | |||
| [[#ESC|ESC]] | |||
| [[#FS|FS]] | |||
| [[#GS|GS]] | |||
| [[#RS|RS]] | |||
| [[#US|US]] | |||
|- | |||
! scope="row" | 2. | |||
| [[Пробел|SP]] | |||
| ! | |||
| " | |||
| # | |||
| $ | |||
| % | |||
| & | |||
| ' | |||
| ( | |||
| ) | |||
| * | |||
| + | |||
| , | |||
| - | |||
| . | |||
| / | |||
|- | |||
! scope="row" | 3. | |||
| 0 | |||
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | |||
| 9 | |||
| : | |||
| ; | |||
| < | |||
| = | |||
| > | |||
| ? | |||
|- | |||
! scope="row" | 4. | |||
| @ | |||
| A | |||
| B | |||
| C | |||
| D | |||
| E | |||
| F | |||
| G | |||
| H | |||
| I | |||
| J | |||
| K | |||
| L | |||
| M | |||
| N | |||
| O | |||
|- | |||
! scope="row" | 5. | |||
| P | |||
| Q | |||
| R | |||
| S | |||
| T | |||
| U | |||
| V | |||
| W | |||
| X | |||
| Y | |||
| Z | |||
| <nowiki>[</nowiki> | |||
| \ | |||
| <nowiki>]</nowiki> | |||
| ^ | |||
| _ | |||
|- | |||
! scope="row" | 6. | |||
| ` | |||
| a | |||
| b | |||
| c | |||
| d | |||
| e | |||
| f | |||
| g | |||
| h | |||
| i | |||
| j | |||
| k | |||
| l | |||
| m | |||
| n | |||
| o | |||
|- | |||
! scope="row" | 7. | |||
| p | |||
| q | |||
| r | |||
| s | |||
| t | |||
| u | |||
| v | |||
| w | |||
| x | |||
| y | |||
| z | |||
| <nowiki>{</nowiki> | |||
| <nowiki>|</nowiki> | |||
| <nowiki>}</nowiki> | |||
| ~ | |||
| [[#DEL|DEL]] | |||
|- | |||
|} | |||
=== | Все символы в ASCII делятся на 4 группы по 32 символа{{sfn|Mackenzie|1980|p=237}}: | ||
{{ | # [[#Управляющие символы|Управляющие символы]] предназначены для управления передачей и выводом текста на терминал{{sfn|Mackenzie|1980|p=234}}. Группа начинается с символа [[#NUL|NUL]] ({{0x|00}}), означающего незаписанный участок носителя, например перфоленты, и игнорируемого при выводе на экран или на печать{{sfn|Mackenzie|1980|p=235}}. За пределами группы, в конце таблицы также располагается символ [[#DEL|DEL]] ({{0x|7F}}), означающий пробитый целиком участок перфоленты и сигнализирующий о том, что символ, записанный здесь ранее, был удалён, а значит, его также следует пропустить{{sfn|Mackenzie|1980|p=235}}{{sfn|Mackenzie|1980|p=225}}. | ||
#* Сами управляющие символы основной группы изначально были разделены на 4 подгруппы: управление передачей ({{0x|01}}—{{0x|07}}), форматирование ({{0x|08}}—{{0x|0F}}), управление устройством ({{0x|10}}—{{0x|17}}) и разделители потоков данных ({{0x|18}}—{{0x|1F}}){{sfn|Mackenzie|1980|p=226}}. В редакции 1967 года этот порядок был отчасти нарушен из-за переноса дополнительных управляющих символов. | |||
# Группа цифр и основных знаков препинания делится на две подгруппы по 16 символов, соответствующие верхнему и нижнему регистру. | |||
#* Группа начинается с [[пробел]]а ({{0x|20}}) — было принято решение, что пробел должен считаться [[Печатные символы|печатным]], а не управляющим символом, но при этом располагаться в самом начале для корректной работы [[Алгоритм сортировки|алгоритмов сортировки]]{{sfn|Mackenzie|1980|p=222—224}}. | |||
#* 9 символов после пробела — знаки препинания (<code>!</code>, <code>"</code>, <code>#</code>, <code>$</code>, <code>%</code>, <code>&</code>, <code>'</code>, <code>(</code>, <code>)</code>), идущие в том порядке, в котором их располагали на клавиатурах [[Пишущая машина|пишущих машин]] тех лет{{sfn|Mackenzie|1980|p=240}}, за исключением скобок, которые заняли позиции {{0x|28}} и {{0x|29}}, поскольку цифра 0 оказалась под кодовой позицией пробела{{sfn|Mackenzie|1980|p=241}}. Впрочем, на некоторых электромеханических пишущих машинах, в частности [[IBM Selectric]], расположение этих знаков было иным в связи с наличием у них механизма дозирования силы удара, который требовал расположения на одной клавише знаков, близких по [[Оптическая плотность|оптической плотности]]. Окончательно отличное от кодовой таблицы ASCII расположение этих знаков на клавиатуре было закреплено в [[IBM PC]]. | |||
#* Цифры идут во второй подгруппе — такое решение было принято для простоты преобразования ASCII в 4-битный [[двоично-десятичный код]] ({{lang-en2|BCD}}) и обратно, соответственно, путём отброса или добавления старших трёх битов кода цифры (011<sub>2</sub>): так, например, цифре 5 соответствует код {{0x|35}} (0110101<sub>2</sub>) в ASCII и 0101<sub>2</sub> в BCD. По этой причине цифры невозможно было разместить в первой подгруппе, поскольку в ней первым идёт пробел{{sfn|Mackenzie|1980|p=225}}{{sfn|Mackenzie|1980|p=239}}. Другая причина расположения цифр в этой подгруппе — необходимость того, чтобы при сортировке большинство знаков препинания располагалось раньше цифр и букв{{sfn|Mackenzie|1980|p=236}}. | |||
#* Символы точки и запятой в пишущих машинах тех лет дублировались в обоих регистрах. При создании ASCII было решено не дублировать их, а разместить в спаренных позициях символы <code><</code> и <code>></code>{{sfn|Mackenzie|1980|p=240—241}}. Знак вопроса также спарен со знаком косой черты как на пишущих машинах{{sfn|Mackenzie|1980|p=240}}. | |||
# Группа заглавных букв начинается с символа «[[@|коммерческое „эт“]]» (@, {{0x|40}}) — предполагалось, что для машин, поставляемых во Францию и Италию, этот символ будет заменяться на букву <code>À</code>. Положение заглавных латинских букв и цифр было выбрано из соображений совместимости с [[Шестибитные кодировки|шестибитной кодировкой]] DEC SIXBIT. Три позиции после заглавных букв ({{0x|5B}}, {{0x|5C}} и {{0x|5D}}) также предполагалось при необходимости заменять на национальные символы. В редакции 1963 года в позициях {{0x|5E}} и {{0x|5F}} располагались, соответственно, символы «стрелка вверх» (↑) и «стрелка влево» (←), заменённые в редакции 1965 года на [[циркумфлекс]] (^) и [[подчёркивание]] (_). | |||
# Группа строчных букв появилась в редакции 1965 года и была частично пересмотрена в редакции 1967 года. Все строчные буквы расположены так же, как и соответствующие заглавные, что позволяет переключать регистр [[инвертирование]]м {{s|6-го}} бита (если первым считать самый младший бит). Позиции {{0x|60}}, {{0x|7B}}, {{0x|7C}} и {{0x|7D}} также предполагалось при необходимости заменять на национальные символы. Символ [[Отрицание (логика)|логического отрицания]] (¬, {{0x|7C}}), добавленный в редакции 1965 года, в редакции 1967 года был убран. | |||
Важная особенность ASCII — он, в отличие, к примеру, от ITA2, не использует переключение регистров{{sfn|Mackenzie|1980|p=236}}. Хотя переключение регистров могло бы уменьшить число битов, требуемое для кодирования сообщения, и, следовательно, уменьшить время передачи и занимаемое место на носителях, оно также повысило бы вероятность не прочесть сообщение при его повреждении{{sfn|Mackenzie|1980|p=214—215}}. Таким образом, было решено отказаться от использования регистров и кодировать все символы {{s|7-ю}} битами{{sfn|Mackenzie|1980|p=236}}. Тем не менее, для возможности дальнейшего расширения ASCII в набор включены символы [[#ESC|ESC]], [[#SI|SI]] и [[#SO|SO]]{{sfn|Mackenzie|1980|p=214—215}}. | |||
=== | === Управляющие символы === | ||
{{ | {{main|Управляющие символы}} | ||
Стандарт ASCII создавался не только для применения в ЭВМ, но и для обмена информацией по [[телетайп]]у. В набор были включены непечатаемые символы, используемые как команды управления телетайпом. Аналогичные команды имелись и в других докомпьютерных средствах обмена сообщениями, где они применялись с учётом специфики устройства и передавались, например, [[Азбука Морзе|азбукой Морзе]] или [[Код Бодо|кодом Бодо]]. Большинство управляющих символов ASCII вскоре утратило своё назначение и в современных компьютерных системах не используется. | |||
Сообщения, передаваемые по каналу связи, делились на две части: | |||
* заголовок; | |||
* текст. | |||
«Заголовок» мог содержать адреса отправителя и получателя, [[Контрольная сумма|контрольную сумму]] и т. п.; мог размещаться до «текста» или после. Термином «текст» называлась часть сообщения, предназначенная для печати. | |||
= | {| class="wikitable" | ||
! Символ | |||
! Код | |||
! Расшифровка | |||
! Перевод | |||
! Описание | |||
|- | |||
| '''{{видимый якорь|NUL}}''' | |||
| {{0x|00}} | |||
| '''nul'''l | |||
| пусто | |||
| Символ <code>NUL</code> всегда игнорировался. [[Носитель информации|Носителем информации]] для телетайпов и первых компьютеров была [[Перфолента (носитель информации)|перфолента]], на которой единичный бит представлялся наличием кодового отверстия, а нулевой бит — его отсутствием. Участки перфоленты, на которых не была записана информация, не имели кодовых отверстий (то есть содержали символы <code>NUL</code>). Символ <code>NUL</code> по сей день используется в некоторых [[Язык программирования|языках программирования]] (например, [[Си (язык программирования)|Си]]) как признак [[Нуль-терминированная строка|конца строки]] (термин «строка» обозначает последовательность символов). В некоторых [[Операционная система|операционных системах]] <code>NUL</code> — последний символ любого [[Текстовый файл|текстового файла]]. | |||
Во многих языках программирования обозначается как <code>\0</code>. | |||
|- | |||
| '''{{видимый якорь|SOH}}''' | |||
| {{0x|01}} | |||
| '''s'''tart '''o'''f '''h'''eading | |||
| начало «заголовка» | |||
| Символ <code>SOH</code> отмечает данные, не относящиеся к «тексту»: часть потока, содержащую адреса и другие служебные данные (собственно «заголовок»). | |||
|- | |||
| '''{{видимый якорь|STX}}''' | |||
| {{0x|02}} | |||
| '''s'''tart of '''t'''e'''x'''t | |||
| начало «текста» | |||
| Включить печатающее устройство (телетайп). Текст для печати располагался между символами <code>STX</code> и <code>ETX</code>. | |||
|- | |||
| '''{{видимый якорь|ETX}}''' | |||
| {{0x|03}} | |||
| '''e'''nd of '''t'''e'''x'''t | |||
| конец «текста» | |||
| Выключить печатающее устройство (телетайп). В наши дни символ <code>ETX</code> используется для отправки [[Процесс (информатика)|процессу]] [[Сигналы (UNIX)|сигнала]] {{mono|[[SIGINT]]}} (от {{lang-en|'''sig'''nal '''int'''errupt}} — «сигнал-прерывание») и может быть набран нажатием комбинации клавиш {{key|[[Ctrl]]|[[C (латиница)|C]]}}. Получив такой сигнал, процесс должен {{iw|Выход (системный вызов)|завершить работу|en|Exit (system call)}}. | |||
|- | |||
| '''{{видимый якорь|EOT}}''' | |||
| {{0x|04}} | |||
| '''e'''nd '''o'''f '''t'''ransmission | |||
| конец передачи | |||
| Символ используется [[Эмулятор терминала|эмуляторами терминалов]] в значении [[EOF]] (от {{lang-en|'''e'''nd '''o'''f '''f'''ile}} — «конец файла») и может быть отправлен нажатием комбинации клавиш {{key|[[Ctrl]]|[[D]]}}. Получив такой сигнал, эмулятор терминала определит процесс, который в данный момент работает с терминалом, и установит в потоке {{mono|[[stdin]]}} (от {{lang-en|'''st'''andar'''d''' '''in'''put stream}} — «стандартный поток ввода») этого процесса признак «конец файла». В результате процесс прекратит {{iw|Чтение (системный вызов)|чтение|en|read (system call)}} {{mono|stdin}} и начнёт обработку прочитанных данных. | |||
|- | |||
| '''{{видимый якорь|ENQ}}''' | |||
| {{0x|05}} | |||
| '''enq'''uiry | |||
| «Прошу подтверждения!» | |||
| | |||
|- | |||
| '''{{видимый якорь|ACK}}''' | |||
| {{0x|06}} | |||
| '''ack'''nowledgement | |||
| «Подтверждаю!» | |||
| Символ <code>NAK</code> означает обратное: ''«Не подтверждаю!».'' | |||
|- | |||
| '''{{видимый якорь|BEL}}''' | |||
| {{0x|07}} | |||
| '''bel'''l | |||
| ''звуковой сигнал'': звонок | |||
| Используется для подачи звукового сигнала. | |||
Во многих языках программирования обозначается как <code>\a</code> (от {{lang-en|alert}}). | |||
|- | |||
| '''{{видимый якорь|BS}}''' | |||
| {{0x|08}} | |||
| '''b'''ack'''s'''pace | |||
| возврат на один символ | |||
| Передаётся при нажатии клавиши {{key|[[Backspace]]}}. | |||
Во многих языках программирования обозначается как <code>\b</code>. | |||
|- | |||
| '''{{видимый якорь|HT}}''' | |||
| {{0x|09}} | |||
| '''h'''orizontal '''t'''ab | |||
| горизонтальная [[табуляция]] | |||
| Во многих языках программирования обозначается как <code>\t</code>. | |||
|- | |||
| '''{{видимый якорь|LF}}''' | |||
| {{0x|0A}} | |||
| '''l'''ine '''f'''eed | |||
| [[перевод строки]] | |||
| Команда для опускания каретки печатающего устройства на одну строку вниз. Обозначение конца строки различается в семействах операционных систем: | |||
* в [[UNIX]] — одиночный символ <code>LF</code>; | |||
* в классических версиях [[Mac OS]] и некоторых ОС домашних компьютеров — одиночный символ <code>CR</code>; | |||
* в [[Microsoft Windows|Windows]] — последовательность символов <code>CR</code> <code>LF</code>. | |||
Многие [[компьютерный терминал|терминалы]] {{s|1970—1980-х}} годов содержали переключатель поведения клавиши {{key|Return}}, позволяющий посылать при нажатии на неё либо последовательность <code>CR</code> <code>LF</code>, либо только <code>CR</code>. | |||
Во многих языках программирования обозначается как <code>\n</code>. | |||
|- | |||
| '''{{видимый якорь|VT}}''' | |||
| {{0x|0B}} | |||
| '''v'''ertical '''t'''ab | |||
| вертикальная [[табуляция]] | |||
| Во многих языках программирования обозначается как <code>\v</code>. | |||
|- | |||
| '''{{видимый якорь|FF}}''' | |||
| {{0x|0C}} | |||
| '''f'''orm '''f'''eed | |||
| «прогон страницы», новая страница | |||
| Команда для [[принтер]]а: продолжить печать с начала следующего листа. | |||
Во многих языках программирования обозначается как <code>\f</code>. | |||
|- | |||
| '''{{видимый якорь|CR}}''' | |||
| {{0x|0D}} | |||
| '''c'''arriage '''r'''eturn | |||
| [[возврат каретки]] | |||
| Команда для принтера: продолжить печать с начала текущей строки (''не'' с новой строки). В классических версиях операционной системы [[Mac OS]] символ <code>CR</code> обозначал конец строки текстового файла. С клавиатуры символ <code>CR</code> может быть введён нажатием комбинации клавиш: {{key|[[Ctrl]]|[[M (латиница)|M]]}}. | |||
Во многих языках программирования обозначается как <code>\r</code>. | |||
|- | |||
| '''{{видимый якорь|SO}}''' | |||
| {{0x|0E}} | |||
| '''s'''hift '''o'''ut | |||
| «Переключиться на другую ленту (кодировку)» | |||
| Другая лента обычно была окрашена в красный цвет. В дальнейшем символ использовался для переключения на национальную кодировку. | |||
|- | |||
| '''{{видимый якорь|SI}}''' | |||
| {{0x|0F}} | |||
| '''s'''hift '''i'''n | |||
| «Переключиться на исходную ленту (кодировку)» | |||
| Команда для выполнения действия, обратного действию <code>SO</code>. | |||
|- | |||
| '''{{видимый якорь|DLE}}''' | |||
| {{0x|10}} | |||
| '''d'''ata '''l'''ink '''e'''scape | |||
| «Экранирование канала данных» | |||
| Любые символы, следующие после <code>DLE</code>, должны восприниматься как данные, а не как управляющие символы. | |||
|- | |||
| '''{{видимый якорь|DC1}}''' | |||
| {{0x|11}} | |||
| '''d'''evice '''c'''ontrol '''1''' | |||
| Первый символ управления устройством | |||
| Команда включить устройство чтения [[Перфолента (носитель информации)|перфоленты]]. | |||
|- | |||
| '''{{видимый якорь|DC2}}''' | |||
| {{0x|12}} | |||
| '''d'''evice '''c'''ontrol '''2''' | |||
| Второй символ управления устройством | |||
| Команда включить [[Перфоратор (вычислительная техника)|перфоратор]]. | |||
|- | |||
| '''{{видимый якорь|DC3}}''' | |||
| {{0x|13}} | |||
| '''d'''evice '''c'''ontrol '''3''' | |||
| Третий символ управления устройством | |||
| Команда выключить устройство чтения перфоленты. | |||
|- | |||
| '''{{видимый якорь|DC4}}''' | |||
| {{0x|14}} | |||
| '''d'''evice '''c'''ontrol '''4''' | |||
| Четвёртый символ управления устройством | |||
| Команда выключить перфоратор. | |||
|- | |||
| '''{{видимый якорь|NAK}}''' | |||
| {{0x|15}} | |||
| '''n'''egative '''a'''c'''k'''nowledgement | |||
| «Не подтверждаю!» | |||
| Обратно символу <code>ACK</code>. | |||
|- | |||
| '''{{видимый якорь|SYN}}''' | |||
| {{0x|16}} | |||
| '''syn'''chronous idle | |||
| синхронное ожидание | |||
| Символ <code>SYN</code> использовался (передавался) для сохранения синхронизма передатчика и приёмника в системах [[Синхронный способ передачи данных|синхронной связи]], когда фактически передавать было нечего. | |||
|- | |||
| '''{{видимый якорь|ETB}}''' | |||
| {{0x|17}} | |||
| '''e'''nd of '''t'''ransmission '''b'''lock | |||
| конец блока передаваемых данных | |||
| Иногда данные (по техническим причинам) разбивались на блоки. | |||
|- | |||
| '''{{видимый якорь|CAN}}''' | |||
| {{0x|18}} | |||
| '''can'''cel | |||
| «Отмена» | |||
| Отмена того, что было передано ранее. | |||
|- | |||
| '''{{видимый якорь|EM}}''' | |||
| {{0x|19}} | |||
| '''e'''nd of '''m'''edium | |||
| «Конец носителя» | |||
| Кончилась бумага, перфолента, [[магнитная лента]] и т. п. | |||
|- | |||
| '''{{видимый якорь|SUB}}''' | |||
| {{0x|1A}} | |||
| '''sub'''stitute | |||
| «Замена» | |||
| Символ ставится: | |||
* на месте символа, значение которого было потеряно (или испорчено) при передаче; | |||
* перед символом, для интерпретации которого нужно переключиться на дополнительный набор символов; | |||
* перед символом, печатать который нужно другим цветом; | |||
* и т. п. | |||
В настоящее время символ вставляется нажатием комбинации клавиш {{key|[[Ctrl]]|[[Z (латиница)|Z]]}} и используется для обозначения конца файла в операционных системах [[DOS]] и [[Microsoft Windows|Windows]]. | |||
|- | |||
| '''{{видимый якорь|ESC}}''' | |||
| {{0x|1B}} | |||
| '''esc'''ape | |||
| экранирование | |||
| Признак того, что символ, следующий после <code>ESC</code>, имеет какое-то другое (отличное от определённого в ASCII) значение. Обычно после символа <code>ESC</code> следуют [[Управляющие последовательности ANSI|управляющие последовательности]]; в операционной системе [[DOS]] они реализуются драйвером [[ANSI.SYS]]. | |||
|- | |||
| '''{{видимый якорь|DEL}}''' | |||
| {{0x|7F}} | |||
| '''del'''ete | |||
| «Забой», стереть последний символ | |||
| Символом <code>DEL</code> (состоящим из семи единичных битов) можно было «забить» любой символ. Устройства и программы игнорировали <code>DEL</code> так же, как и <code>NUL</code>. | |||
Код этого символа происходит из первых [[Текстовый редактор|текстовых процессоров]] с памятью на [[Перфолента (носитель информации)|перфоленте]]: в них удаление символа происходило «забиванием» его кода отверстиями (обозначавшими [[двоичная логика|логические единицы]]). | |||
|} | |||
= | Поддерживалось разделение данных на 4 уровня: | ||
{| class="wikitable" | |||
! Символ | |||
! Код | |||
! Расшифровка | |||
! Перевод | |||
! Описание | |||
|- | |||
| '''{{видимый якорь|FS}}''' | |||
| {{0x|1C}} | |||
| '''f'''ile '''s'''eparator | |||
| разделитель файлов | |||
| сообщение могло состоять из файлов | |||
|- | |||
| '''{{видимый якорь|GS}}''' | |||
| {{0x|1D}} | |||
| '''g'''roup '''s'''eparator | |||
| разделитель групп | |||
| файлы могли состоять из групп | |||
|- | |||
| '''{{видимый якорь|RS}}''' | |||
| {{0x|1E}} | |||
| '''r'''ecord '''s'''eparator | |||
| разделитель записей | |||
| группы могли состоять из записей | |||
|- | |||
| '''{{видимый якорь|US}}''' | |||
| {{0x|1F}} | |||
| '''u'''nit '''s'''eparator | |||
| разделитель полей | |||
| записи могли состоять из полей | |||
|} | |||
=== | == Наложение символов == | ||
{{ | С помощью символа [[#BS|BS]] (возврат на один символ) на [[Печатающее устройство|печатающем устройстве]] (например, [[АЦПУ]] [[телетайп]]а или [[Ударный матричный принтер|матричном принтере]]) можно напечатать один символ поверх другого. В ASCII таким же способом можно добавить к буквам [[диакритические знаки]]{{sfn|ASCII67|p=11—12|loc=A5.2}}, например: | ||
| | |||
| | * <code>a</code> <code>BS</code> <code>'</code> → {{mono|á}} | ||
| | * <code>a</code> <code>BS</code> <code>`</code> → {{mono|à}} | ||
| | * <code>a</code> <code>BS</code> <code>^</code> → {{mono|â}} | ||
* <code>a</code> <code>BS</code> <code>"</code> → {{mono|ä}} | |||
* <code>o</code> <code>BS</code> <code>/</code> → {{mono|ø}} | |||
* <code>c</code> <code>BS</code> <code>,</code> → {{mono|ç}} | |||
* <code>n</code> <code>BS</code> <code>~</code> → {{mono|ñ}} | |||
Разработчикам [[шрифт]]ов рекомендовалось учитывать возможность использования [[Кавычка|двойной кавычки]] ("), [[апостроф]]а ('), [[Запятая|запятой]] (,) и [[Тильда|тильды]] (~) в качестве диакритических знаков, а [[гравис]]а (`) — в качестве открывающей одиночной кавычки{{sfn|ASCII67|p=11—12|loc=A5.2}}. Поэтому в некоторых шрифтах, предназначенных для использования в [[Компьютерный терминал|терминалах]] (в частности, [[Terminus]]) апостроф может рисоваться с наклоном вправо, а тильда — быть сдвинутой вверх, чтобы они могли использоваться в качестве [[акут]]а (´) и [[Тильда сверху|тильды сверху]] (˜). | |||
Если в одной позиции дважды напечатать один и тот же символ, получится [[Жирное начертание|жирный]] символ; если в одной позиции напечатать символ и [[подчёркивание]] (_), получится подчёркнутый символ: | |||
* <code>a</code> <code>BS</code> <code>a</code> → '''{{mono|a}}''' | |||
* <code>a</code> <code>BS</code> <code>_</code> → <u>{{mono|a}}</u> | |||
Эта техника до сих пор используется, например, в справочной системе [[man]]. | |||
== Представление ASCII в ЭВМ == | |||
На многих компьютерах {{s|1950—1960-х}} годов минимально [[Адресация памяти|адресуемой]] единицей памяти было [[машинное слово]], размер которого, как правило, был в несколько раз больше размера символа. Зачастую для экономии памяти на таких компьютерах в одно слово упаковывали несколько символов. Так, например, на [[мейнфрейм]]ах [[PDP-10]] с размером слова в [[36 бит]] поначалу использовали [[Шестибитная кодировка|шестибитные символы]], размещая по 6 символов в слове, а после перехода на ASCII в одном слове стали размещать либо 5 семибитных символов (1 бит оставался незадействованным), либо 4 девятибитных символа<ref>{{cite web |author=Marshall Cline |url=https://isocpp.org/wiki/faq/intrinsic-types#bytes-review |title=Built-in / Intrinsic / Primitive Data Types, C++ FAQ |subtitle=(Q: Would you please go over the rules about bytes, chars, and characters one more time?) |lang=en |access-date=2025-04-15 |url-status=live |archive-url=https://web.archive.org/web/20250403154451/https://isocpp.org/wiki/faq/intrinsic-types#bytes-review |archive-date=2025-04-03 }}</ref>. | |||
С конца {{s|1960-х}} годов на большинстве выпускаемых компьютеров минимально адресуемой единицей памяти стал 8-битный [[байт]] ([[Октет (информатика)|октет]]), поэтому на них используются не 7-битные, а 8-битные символы. Обычно символ ASCII дополняют до 8 бит, добавляя один нулевой бит в качестве [[Старший бит|старшего бита]] октета. | |||
=== USASCII-8 === | |||
На мейнфреймах [[IBM System/360|IBM/360]] применялся другой способ дополнения символа ASCII до 8 бит: {{s|6-й}} бит (если первым считать самый младший бит) перемещается в {{s|7-й}}, а бывший {{s|7-й}} «раздваивается» и копируется и в {{s|8-й}} бит, и в {{s|6-й}}<ref>{{статья |автор={{автор|Амдал, Джин|Amdahl G. M.}}, {{автор|Блаау, Геррит|Blaauw G. A.}}, {{автор|Брукс, Фредерик|Brooks F. P., Jr.}} |заглавие=Architecture of the IBM System/360 |ссылка=https://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/IBM360-Amdahl_april64.pdf |язык=en |издание=IBM Journal of Research and Development |год=1964 |месяц=4 |том=8 |выпуск=2 |страницы=87—101 |doi=10.1147/rd.82.0087 |archive-url=http://web.archive.org/web/20250219133408/https://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/IBM360-Amdahl_april64.pdf |archive-date=2025-02-19 }}</ref>. Такую кодировку называли USASCII-8{{sfn|Mackenzie|1980|p=399—400}}. | |||
{| class="wikitable" style="text-align: center; font-family: monospace;" | |||
| | |||
! scope="col" style="width: 2.5em;" | .0 | |||
! scope="col" style="width: 2.5em;" | .1 | |||
! scope="col" style="width: 2.5em;" | .2 | |||
! scope="col" style="width: 2.5em;" | .3 | |||
! scope="col" style="width: 2.5em;" | .4 | |||
! scope="col" style="width: 2.5em;" | .5 | |||
! scope="col" style="width: 2.5em;" | .6 | |||
! scope="col" style="width: 2.5em;" | .7 | |||
! scope="col" style="width: 2.5em;" | .8 | |||
! scope="col" style="width: 2.5em;" | .9 | |||
! scope="col" style="width: 2.5em;" | .A | |||
! scope="col" style="width: 2.5em;" | .B | |||
! scope="col" style="width: 2.5em;" | .C | |||
! scope="col" style="width: 2.5em;" | .D | |||
! scope="col" style="width: 2.5em;" | .E | |||
! scope="col" style="width: 2.5em;" | .F | |||
|- | |||
! scope="row" | 0. | |||
| NUL | |||
| SOM | |||
| EOA | |||
| EOM | |||
| EQT | |||
| WRU | |||
| RU | |||
| BELL | |||
| BKSP | |||
| HT | |||
| LF | |||
| VT | |||
| FF | |||
| CR | |||
| SO | |||
| SI | |||
|- | |||
! scope="row" | 1. | |||
| DC<sub>0</sub> | |||
| DC<sub>1</sub> | |||
| DC<sub>2</sub> | |||
| DC<sub>3</sub> | |||
| DC<sub>4</sub> | |||
| ERR | |||
| SYNC | |||
| LEM | |||
| S<sub>0</sub> | |||
| S<sub>1</sub> | |||
| S<sub>2</sub> | |||
| S<sub>3</sub> | |||
| S<sub>4</sub> | |||
| S<sub>5</sub> | |||
| S<sub>6</sub> | |||
| S<sub>7</sub> | |||
|- | |||
! scope="row" | 2. | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
! scope="row" | 3. | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
! scope="row" | 4. | |||
| <small>BLANK</small> | |||
| ! | |||
| " | |||
| # | |||
| $ | |||
| % | |||
| & | |||
| ' | |||
| ( | |||
| ) | |||
| * | |||
| + | |||
| , | |||
| - | |||
| . | |||
| / | |||
|- | |||
! scope="row" | 5. | |||
| 0 | |||
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | |||
| 9 | |||
| : | |||
| ; | |||
| < | |||
| = | |||
| > | |||
| ? | |||
|- | |||
! scope="row" | 6. | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
! scope="row" | 7. | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
! scope="row" | 8. | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
! scope="row" | 9. | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
! scope="row" | A. | |||
| @ | |||
| A | |||
| B | |||
| C | |||
| D | |||
| E | |||
| F | |||
| G | |||
| H | |||
| I | |||
| J | |||
| K | |||
| L | |||
| M | |||
| N | |||
| O | |||
|- | |||
! scope="row" | B. | |||
| P | |||
| Q | |||
| R | |||
| S | |||
| T | |||
| U | |||
| V | |||
| W | |||
| X | |||
| Y | |||
| Z | |||
| [ | |||
| \ | |||
| ] | |||
| ↑ | |||
| ← | |||
|- | |||
! scope="row" | C. | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
! scope="row" | D. | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
! scope="row" | E. | |||
| | |||
| a | |||
| b | |||
| c | |||
| d | |||
| e | |||
| f | |||
| g | |||
| h | |||
| i | |||
| j | |||
| k | |||
| l | |||
| m | |||
| n | |||
| o | |||
|- | |||
! scope="row" | F. | |||
| p | |||
| q | |||
| r | |||
| s | |||
| t | |||
| u | |||
| v | |||
| w | |||
| x | |||
| y | |||
| z | |||
| | |||
| | |||
| | |||
| ESC | |||
| DEL | |||
|} | |||
== Ввод с клавиатуры == | |||
Расположение символов ASCII на [[Клавиатура|клавиатуре]] согласно ANSI X4.14—1971: символы верхнего регистра вводятся в сочетании с клавишей {{key|Shift}}, а управляющие символы — с {{key|Ctrl}}<ref>ANSI X4.14—1971: Alphanumeric Keyboard Arrangements Accommodating the Character Sets of ASCII and ASCSOCR{{ref|en}}</ref>. | |||
{{клавиатура компьютера | |||
|раскладка=S0.5;1;1;1;1;1;1;1;1;1;1;1;1;1;1 | |||
1;1;1;1;1;1;1;1;1;1;1;1;1;1 | |||
S0.25;1;1;1;1;1;1;1;1;1;1;1;1;1;1 | |||
S0.25;1.5;1;1;1;1;1;1;1;1;1;1;1.25;1 | |||
S2;9.5 | |||
|обозначения=[ | |||
["!\n1","\"\n2","#\n3","$\n4","%\n5","&\n6","'\n7","(\n8",")\n9","␠\n0","=\n-","~ ␞\n^","¦ ␜\n\\","<span style{{=}}\"color:silver\">BS</span>"], | |||
["<span style{{=}}\"color:silver\">ESC</span>","Q ␑\nq","W ␗\nw","E ␅\ne","R ␒\nr","T ␔\nt","Y ␙\ny","U ␕\nu","I ␉\ni","O ␏\no","P ␐\np","` ␀\n@","{ ␛\n[","_ ␟\n␡"], | |||
["''Ctrl''","A ␁\na","S ␓\ns","D ␄\nd","F ␆\nf","G ␇\ng","H ␈\nh","J ␊\nj","K ␋\nk","L ␌\nl","+\n;","*\n:","} ␝\n]","<span style{{=}}\"color:silver\">CR</span>"], | |||
["''Shift''","Z ␚\nz","X ␘\nx","C ␃\nc","V ␖\nv","B ␂\nb","N ␎\nn","M ␍\nm","<\n,",">\n.","?\n\/","''Shift''","<span style{{=}}\"color:silver\">LF</span>"], | |||
["␠"] | |||
]}} | |||
На кодах символов ASCII основаны используемые в программировании промежуточные [[Кроссплатформенность|кроссплатформенные]] коды нажатых клавиш (в противовес [[скан-код]]ам IBM PC и прочим внутренним кодам). Ниже показано соответствие данных кодов клавишам для латинской [[Раскладка клавиатуры|раскладки]] [[QWERTY]]<ref>{{cite web |title=Keys Enum |url=https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?view=windowsdesktop-9.0 |lang=en |website=Microsoft.com |access-date=2025-02-22 |url-status=live |archive-url=https://web.archive.org/web/20250201094807/https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?view=windowsdesktop-9.0 |archive-date=2025-02-01 }}</ref>. | |||
{{Клавиатура компьютера|обозначения=[ | |||
["27","112","113","114","115","116","117","118","119","120","121","122","123","44","145","19","189"], | |||
["192","49","50","51","52","53","54","55","56","57","48","189","187","8","45","36","33","144","111","106","109"], | |||
["9","81","87","69","82","84","89","85","73","79","80","219","221","13","46","35","34","103","104","105","107"], | |||
["20","65","83","68","70","71","72","74","75","76","186","222","220","100","101","102"], | |||
["16","226","90","88","67","86","66","78","77","188","190","191","16","38","97","98","99","13"], | |||
["17","91","18","32","18","92","93","17","37","40","39","96","110"] | |||
]}} | |||
== Национальные варианты и расширения == | |||
=== 7-битные варианты === | |||
{{якорь|ISO 646}} <!-- Якорь для перенаправления со страницы ISO 646 --> | |||
Возможность адаптации ASCII под нужды других стран предусмотрена сразу в трёх тесно взаимосвязанных стандартах, появившихся во второй половине {{s|1960-х}} годов, — ECMA-6 [[European Computer Manufacturers Association|Европейской ассоциации производителей компьютеров]], {{s|ISO 646}} [[Международная организация по стандартизации|Международной организации по стандартизации]] (ныне — {{s|ISO/IEC 646}}) и Рекомендации V.3 (Международный алфавит № 5) [[Международный консультативный комитет по телеграфии и телефонии|Международного консультативного комитета по телеграфии и телефонии]] (ныне — Рекомендация {{iw|T.50||en|T.50 (standard)}} (Международный справочный алфавит) [[Сектор стандартизации электросвязи МСЭ|Сектора стандартизации электросвязи МСЭ]]). Для этого предлагается заменять символы <code>@</code>, <code>[</code>, <code>\</code>, <code>]</code>, <code>^</code>, <code>`</code>, <code>{</code>, <code>|</code>, <code>}</code> и <code>~</code> на национальные. Кроме того, допускается замена [[Знак решётки|знака решётки]] (<code>#</code>) на [[знак фунта]] (<code>£</code>), а [[Знак доллара|знака доллара]] (<code>$</code>) — на [[знак валюты]] (<code>¤</code>). Унифицированный вариант кода, не содержащий национальные символы, при этом обозначается как {{lang-en2|IRV}} (сокр. от {{lang-en|international reference version}} — «международная ссылочная версия»){{efn|Действующие редакции международных ссылочных версий всех трёх упомянутых стандартов полностью совпадают с ASCII.}}. {{s|ISO 646}} IRV был утверждён в [[Союз Советских Социалистических Республик|Советском Союзе]] в {{s|[[ГОСТ]] 13052}} (ныне — {{s|ГОСТ 27463}}<ref>{{ГОСТ|27463-87}}.</ref>) под названием [[КОИ-7 Н0]]. | |||
Для некоторых языков с нелатинской письменностью ([[Русский язык|русского]], [[Греческий язык|греческого]], [[Арабский язык|арабского]], [[иврит]]а и др.) существовали и более радикальные модификации ASCII: | |||
* в одних на месте [[Строчная буква|строчных]] латинских букв размещались национальные символы (для русского ([[КОИ-7 Н2]]) и греческого вариантов — [[Прописная буква|заглавные]] буквы); | |||
* в других предусматривалось переключение между ASCII ({{s|ISO 646}} IRV) и национальным вариантом кода «на лету» с помощью символов [[#SO|SO]] и [[#SI|SI]]; в этом случае в национальном варианте можно было полностью заменить латинские буквы на национальные символы (как, например, в [[КОИ-7 Н1]]). | |||
=== 8-битные расширения === | |||
В {{s|1970-х}} годах начали появляться производные 8-битные кодировки ([[Кодовая страница|кодовые страницы]]), содержащие 2<sup>8</sup> = 256 кодовых позиций, в которых нижняя половина (позиции {{0x|00}}—{{0x|7F}}) кодовой таблицы, как правило, полностью совпадает с ASCII, а верхняя (позиции {{0x|80}}—{{0x|FF}}) служит для размещения дополнительных, в том числе национальных, символов. Подобные ASCII-совместимые кодировки, получившие неофициальное собирательное название «{{iw|расширенный ASCII||en|Extended ASCII}}», оказались удобнее упомянутых ранее 7-битных вариантов и широко использовались вплоть до начала повсеместного внедрения [[Юникод]]а. Впрочем, отсутствие единого подхода к размещению дополнительных символов в их кодовых таблицах (например, [[Кириллица|кириллицы]] в [[ISO 8859-5|{{s|ISO/IEC 8859}}-5]], [[KOI8-R]], [[Windows-1251]] и т. д.) порождало множество проблем. Так, например, когда [[Почтовая программа|почтовые клиенты]] отправителя и получателя использовали различные кодировки для интерпретации текста письма, тот (за исключением символов ASCII) становился нечитаемым (превращался в так называемые [[:wikt:крокозябра|кракозябры]]). | |||
=== ISO/IEC 10646 и Юникод === | |||
{{main|Юникод}} | |||
Символы ASCII включены в кодированные наборы символов двух тесно взаимосвязанных современных стандартов — {{s|[[ISO/IEC 10646]]}} ([[Универсальный набор символов|UCS]]) и Юникода — под теми же самыми кодами ({{0x|00}}—{{0x|7F}}), благодаря чему их представление [[UTF-8]] полностью [[Обратная совместимость|обратно совместимо]] с 8-битным (см. [[#Представление ASCII в ЭВМ|выше]]) представлением ASCII. Таким образом, {{s|ISO/IEC 10646}} и Юникод можно рассматривать как расширения ASCII. | |||
== См. также == | |||
* [[Переносимый набор символов]] | |||
* [[YUSCII]] | |||
* [[ASCII-графика]] | |||
== Примечания == | |||
=== Комментарии === | |||
{{комментарии}} | |||
=== Источники === | |||
{{примечания}} | |||
== Литература == | |||
* {{публикация|заглавие=American Standard Code for Information Interchange, ASA X3.4—1963|ref=ASCII63}} | |||
* {{публикация|заглавие=USA Standard Code for Information Interchange, USAS X3.4—1967|ссылка=https://ia600401.us.archive.org/23/items/enf-ascii-1968-1970/Image070917151315.pdf|ref=ASCII67}} | |||
* {{публикация|заглавие=USA Standard Code for Information Interchange, USAS X3.4—1968|ref=ASCII68}} | |||
* {{публикация|заглавие=American National Standard Code for Information Interchange, ANSI X3.4—1977|ref=ASCII77}} | |||
* {{публикация|заглавие=7-Bit American National Standard Code for Information Interchange (7-Bit ASCII), ANSI X3.4—1986|ref=ASCII86}} | |||
== Ссылки == | |||
* {{книга |автор=Charles E. Mackenzie |заглавие=Coded Character Sets, History and Development |язык=en |ссылка=https://archive.org/details/mackenzie-coded-char-sets |издательство=[[Addison-Wesley|Addison-Wesley Publishing Company, Inc.]] |год=1980 |страниц=513 |isbn=0-201-14460-3 |ref=Mackenzie }} | |||
* {{cite web |first=Eric |last=Fischer |url=https://archive.org/details/enf-ascii |title=The Evolution of Character Codes, 1874—1968 |date=2000-06-20 |lang=en |access-date=2025-04-11 |url-status=live |pages=PP. 11—28 |ref=Fischer }} | |||
* {{книга |заглавие=Толковый словарь по вычислительным системам |язык=ru |ответственный=Под редакцией В. Иллингуорта и др.: Пер. с английского А. К. Белоцкого и др.; Под редакцией Е. К. Масловского |место=М. |издательство=[[Машиностроение (издательство)|Машиностроение]] |год=1990 |страниц как есть=560 с.: ил |isbn=5-217-00617-X |тираж=70000 |ref=Иллингуорт }} | |||
* {{cite web | |||
|author = [[Ecma International]] | |||
|url = https://ecma-international.org/publications-and-standards/standards/ecma-6/ | |||
|title = Standard ECMA-6: 7-bit coded character set | |||
|lang = en | |||
|access-date = 2025-04-11 | |||
|url-status = live | |||
|archive-url = https://web.archive.org/web/20250403161152/https://ecma-international.org/publications-and-standards/standards/ecma-6/ | |||
|archive-date = 2025-04-03 | |||
}} | |||
* {{cite web | |||
|author = [[Дженнингс, Том|Tom Jennings]] | |||
|url = http://www.wps.com/projects/codes/index.html | |||
|title = An annotated history of some character codes or ASCII: American Standard Code for Information Infiltration | |||
|date = 2004-10-29 | |||
|lang = en | |||
|url-status = dead | |||
|archive-url = https://web.archive.org/web/20130615102246/http://www.wps.com/projects/codes/index.html | |||
|archive-date = 2013-06-15 | |||
}} | |||
* {{cite web | |||
|author = Jim Price | |||
|url = http://www.jimprice.com/jim-asc.shtml | |||
|title = ASCII Chart and Other Resources | |||
|date = 2010-05-24 | |||
|lang = en | |||
|website = JimPrice.Com | |||
|access-date = 2025-04-11 | |||
|url-status = live | |||
|archive-url = https://web.archive.org/web/20250404034047/http://www.jimprice.com/jim-asc.shtml | |||
|archive-date = 2025-04-04 | |||
}} | }} | ||
{{ВС}} | |||
{{Кодировки символов}} | |||
{{ASCII}} | |||
[[Категория:ASCII|*]] | |||
[[Категория:Компьютерные кодировки]] | |||
Текущая версия от 02:32, 31 января 2026
Ошибка скрипта: Модуля «hatnote» не существует.{{#if: | }} Шаблон:Falseredirect Шаблон:Технологический стандарт ASCII (англ. Шаблон:Lang-en2, произносится Шаблон:IPAc-en<ref>Шаблон:Cite web</ref>) — стандарт кодирования букв латинского алфавита, цифр, некоторых специальных знаков и управляющих символов, принятый в 1963 году Американской ассоциацией стандартов как основной способ представления текстовых данных в ЭВМШаблон:Sfn.
Во избежание путаницы с используемыми в других странах национальными кодами, основанными на ASCII, IANA рекомендует обозначать оригинальный код как US-ASCII<ref>Шаблон:Cite web</ref>.
ASCII представляет собой набор из 128 кодов символов, каждому из которых соответствует 7-битовое двоичное число. Его введение позволило упростить обмен данными между разными компьютерными системами. Европейской модификацией ASCII является стандарт Latin 1, российской — КОИ-7<ref>Шаблон:БРЭ</ref>.
Описание

Стандарт ASCII представляет собой 7-битный код без рекомендаций относительно контроля чётности, содержащий 27 = 128 кодовых позицийШаблон:Sfn, в которых размещены следующие символы:
- десятичные цифры;
- латинские буквы;
- знаки препинания;
- орфографические знаки;
- диакритические знаки;
- математические символы;
- управляющие символы.
История
С развитием вычислительной техники и языков программирования возможностей телетайпного кода ITA2 стало не хватать, что вынуждало производителей ЭВМ создавать расширения для ITA2 или же свои собственные коды. Кроме того, для записи на перфокарты использовались различные варианты кода Холлерита. Таким образом, к началу Шаблон:S годов существовало достаточно большое количество кодировок латиницы, используемых как для передачи по линиям связи, так и для записи на носители — магнитную ленту, перфоленту и перфокарты, — таких как ITA2, Шаблон:Iw, различные варианты BCDIC и т. д.Шаблон:Sfn, причём даже в рамках одной и той же кодировки один код мог соответствовать различным символам в зависимости от модели и назначения устройства. Чтобы решить эту проблему, 4 августа 1960 года был создан комитет X3.2 (как часть комитета X3, сформированного 13 января того же года)Шаблон:Sfn, в который вошли представители компаний IBM (в частности, Шаблон:Iw), AT&T, Bell Labs и других.
Работа по созданию ASCII началась 6 октября 1960 годаШаблон:Sfn, и 17 июня 1963 года, почти 3 года спустя, была опубликована его первая редакция (ASA X3.4—1963)Шаблон:Sfn. В ней отсутствовали строчные буквы, а область из 28 кодовых позиций Шаблон:0x—Шаблон:0x была зарезервирована для дальнейшего использованияШаблон:SfnШаблон:Sfn. Велись споры о том, как использовать эту область — для добавления строчных букв или же управляющих символов.
В 1965 году была подготовлена новая редакция ASCII (ASA X3.4—1965), которая, однако, так и не была опубликована и не использовалась нигде, кроме терминалов IBM 2260/2848 и принтеров IBM 1053 (да и то без строчных букв и некоторых других символов)Шаблон:Sfn. Следующая редакция ASCII (USAS X3.4—1967) была опубликована 5 июля 1967 года и определила окончательную кодовую таблицуШаблон:Sfn. Новые редакции ASCII продолжили выходить и далее (USAS X3.4—1968, ANSI X3.4—1977, ANSI X3.4—1986 и т. д.), однако кодовую таблицу изменения в них более не затрагивали.
Компания IBM первое время саботировала внедрение ASCII. В ней отдавали предпочтение собственной кодировке EBCDIC, являющейся дальнейшим развитием кодировки BCDIC, также созданной IBM и основанной, в свою очередь, на коде ХоллеритаШаблон:Sfn.
Структурные свойства таблицы
Первая редакция ASCII содержала 36 управляющих символов, пробел, 10 арабских цифр, 26 заглавных латинских букв и 27 специальных символов, подразделяемых на группыШаблон:Sfn:
- 8 знаков препинания (
.,,,:,;,!,?,',"); - 5 знаков для финансовых и биржевых операций (
#,$,%,&,@); - 2 пары скобок (
(,),[,]); - 8 математических символов (
+,-,*,/,\,=,<,>)Шаблон:Efn; - 2 стрелки для блок-схем (
↑,←).
Символ «подушка» (⌑), имевшийся в наборе доступных символов многих печатающих устройств того времени и присутствовавший в кодировках BCDIC, Fieldata и др., ни в одну из редакций ASCII не вошёл.
В редакции 1967 года был пересмотрен (сокращён до 33) набор управляющих символов и убраны стрелки, а также добавлены строчные буквы и 7 дополнительных символов (^, _, `, {, |, }, ~), после чего кодовая таблица приняла окончательный видШаблон:Sfn:
| .0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0. | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
| 1. | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
| 2. | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 3. | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 4. | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 5. | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
| 6. | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
| 7. | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
Все символы в ASCII делятся на 4 группы по 32 символаШаблон:Sfn:
- Управляющие символы предназначены для управления передачей и выводом текста на терминалШаблон:Sfn. Группа начинается с символа NUL (Шаблон:0x), означающего незаписанный участок носителя, например перфоленты, и игнорируемого при выводе на экран или на печатьШаблон:Sfn. За пределами группы, в конце таблицы также располагается символ DEL (Шаблон:0x), означающий пробитый целиком участок перфоленты и сигнализирующий о том, что символ, записанный здесь ранее, был удалён, а значит, его также следует пропуститьШаблон:SfnШаблон:Sfn.
- Сами управляющие символы основной группы изначально были разделены на 4 подгруппы: управление передачей (Шаблон:0x—Шаблон:0x), форматирование (Шаблон:0x—Шаблон:0x), управление устройством (Шаблон:0x—Шаблон:0x) и разделители потоков данных (Шаблон:0x—Шаблон:0x)Шаблон:Sfn. В редакции 1967 года этот порядок был отчасти нарушен из-за переноса дополнительных управляющих символов.
- Группа цифр и основных знаков препинания делится на две подгруппы по 16 символов, соответствующие верхнему и нижнему регистру.
- Группа начинается с пробела (Шаблон:0x) — было принято решение, что пробел должен считаться печатным, а не управляющим символом, но при этом располагаться в самом начале для корректной работы алгоритмов сортировкиШаблон:Sfn.
- 9 символов после пробела — знаки препинания (
!,",#,$,%,&,',(,)), идущие в том порядке, в котором их располагали на клавиатурах пишущих машин тех летШаблон:Sfn, за исключением скобок, которые заняли позиции Шаблон:0x и Шаблон:0x, поскольку цифра 0 оказалась под кодовой позицией пробелаШаблон:Sfn. Впрочем, на некоторых электромеханических пишущих машинах, в частности IBM Selectric, расположение этих знаков было иным в связи с наличием у них механизма дозирования силы удара, который требовал расположения на одной клавише знаков, близких по оптической плотности. Окончательно отличное от кодовой таблицы ASCII расположение этих знаков на клавиатуре было закреплено в IBM PC. - Цифры идут во второй подгруппе — такое решение было принято для простоты преобразования ASCII в 4-битный двоично-десятичный код (Шаблон:Lang-en2) и обратно, соответственно, путём отброса или добавления старших трёх битов кода цифры (0112): так, например, цифре 5 соответствует код Шаблон:0x (01101012) в ASCII и 01012 в BCD. По этой причине цифры невозможно было разместить в первой подгруппе, поскольку в ней первым идёт пробелШаблон:SfnШаблон:Sfn. Другая причина расположения цифр в этой подгруппе — необходимость того, чтобы при сортировке большинство знаков препинания располагалось раньше цифр и буквШаблон:Sfn.
- Символы точки и запятой в пишущих машинах тех лет дублировались в обоих регистрах. При создании ASCII было решено не дублировать их, а разместить в спаренных позициях символы
<и>Шаблон:Sfn. Знак вопроса также спарен со знаком косой черты как на пишущих машинахШаблон:Sfn.
- Группа заглавных букв начинается с символа «коммерческое „эт“» (@, Шаблон:0x) — предполагалось, что для машин, поставляемых во Францию и Италию, этот символ будет заменяться на букву
À. Положение заглавных латинских букв и цифр было выбрано из соображений совместимости с шестибитной кодировкой DEC SIXBIT. Три позиции после заглавных букв (Шаблон:0x, Шаблон:0x и Шаблон:0x) также предполагалось при необходимости заменять на национальные символы. В редакции 1963 года в позициях Шаблон:0x и Шаблон:0x располагались, соответственно, символы «стрелка вверх» (↑) и «стрелка влево» (←), заменённые в редакции 1965 года на циркумфлекс (^) и подчёркивание (_). - Группа строчных букв появилась в редакции 1965 года и была частично пересмотрена в редакции 1967 года. Все строчные буквы расположены так же, как и соответствующие заглавные, что позволяет переключать регистр инвертированием Шаблон:S бита (если первым считать самый младший бит). Позиции Шаблон:0x, Шаблон:0x, Шаблон:0x и Шаблон:0x также предполагалось при необходимости заменять на национальные символы. Символ логического отрицания (¬, Шаблон:0x), добавленный в редакции 1965 года, в редакции 1967 года был убран.
Важная особенность ASCII — он, в отличие, к примеру, от ITA2, не использует переключение регистровШаблон:Sfn. Хотя переключение регистров могло бы уменьшить число битов, требуемое для кодирования сообщения, и, следовательно, уменьшить время передачи и занимаемое место на носителях, оно также повысило бы вероятность не прочесть сообщение при его поврежденииШаблон:Sfn. Таким образом, было решено отказаться от использования регистров и кодировать все символы Шаблон:S битамиШаблон:Sfn. Тем не менее, для возможности дальнейшего расширения ASCII в набор включены символы ESC, SI и SOШаблон:Sfn.
Управляющие символы
Шаблон:Main Стандарт ASCII создавался не только для применения в ЭВМ, но и для обмена информацией по телетайпу. В набор были включены непечатаемые символы, используемые как команды управления телетайпом. Аналогичные команды имелись и в других докомпьютерных средствах обмена сообщениями, где они применялись с учётом специфики устройства и передавались, например, азбукой Морзе или кодом Бодо. Большинство управляющих символов ASCII вскоре утратило своё назначение и в современных компьютерных системах не используется.
Сообщения, передаваемые по каналу связи, делились на две части:
- заголовок;
- текст.
«Заголовок» мог содержать адреса отправителя и получателя, контрольную сумму и т. п.; мог размещаться до «текста» или после. Термином «текст» называлась часть сообщения, предназначенная для печати.
| Символ | Код | Расшифровка | Перевод | Описание |
|---|---|---|---|---|
| Шаблон:Видимый якорь | Шаблон:0x | null | пусто | Символ NUL всегда игнорировался. Носителем информации для телетайпов и первых компьютеров была перфолента, на которой единичный бит представлялся наличием кодового отверстия, а нулевой бит — его отсутствием. Участки перфоленты, на которых не была записана информация, не имели кодовых отверстий (то есть содержали символы NUL). Символ NUL по сей день используется в некоторых языках программирования (например, Си) как признак конца строки (термин «строка» обозначает последовательность символов). В некоторых операционных системах NUL — последний символ любого текстового файла.
Во многих языках программирования обозначается как |
| Шаблон:Видимый якорь | Шаблон:0x | start of heading | начало «заголовка» | Символ SOH отмечает данные, не относящиеся к «тексту»: часть потока, содержащую адреса и другие служебные данные (собственно «заголовок»).
|
| Шаблон:Видимый якорь | Шаблон:0x | start of text | начало «текста» | Включить печатающее устройство (телетайп). Текст для печати располагался между символами STX и ETX.
|
| Шаблон:Видимый якорь | Шаблон:0x | end of text | конец «текста» | Выключить печатающее устройство (телетайп). В наши дни символ ETX используется для отправки процессу сигнала Шаблон:Mono (от англ. Шаблон:Lang-en2 — «сигнал-прерывание») и может быть набран нажатием комбинации клавиш Шаблон:Key. Получив такой сигнал, процесс должен Шаблон:Iw.
|
| Шаблон:Видимый якорь | Шаблон:0x | end of transmission | конец передачи | Символ используется эмуляторами терминалов в значении EOF (от англ. Шаблон:Lang-en2 — «конец файла») и может быть отправлен нажатием комбинации клавиш Шаблон:Key. Получив такой сигнал, эмулятор терминала определит процесс, который в данный момент работает с терминалом, и установит в потоке Шаблон:Mono (от англ. Шаблон:Lang-en2 — «стандартный поток ввода») этого процесса признак «конец файла». В результате процесс прекратит Шаблон:Iw Шаблон:Mono и начнёт обработку прочитанных данных. |
| Шаблон:Видимый якорь | Шаблон:0x | enquiry | «Прошу подтверждения!» | |
| Шаблон:Видимый якорь | Шаблон:0x | acknowledgement | «Подтверждаю!» | Символ NAK означает обратное: «Не подтверждаю!».
|
| Шаблон:Видимый якорь | Шаблон:0x | bell | звуковой сигнал: звонок | Используется для подачи звукового сигнала.
Во многих языках программирования обозначается как |
| Шаблон:Видимый якорь | Шаблон:0x | backspace | возврат на один символ | Передаётся при нажатии клавиши Шаблон:Key.
Во многих языках программирования обозначается как |
| Шаблон:Видимый якорь | Шаблон:0x | horizontal tab | горизонтальная табуляция | Во многих языках программирования обозначается как \t.
|
| Шаблон:Видимый якорь | Шаблон:0x | line feed | перевод строки | Команда для опускания каретки печатающего устройства на одну строку вниз. Обозначение конца строки различается в семействах операционных систем:
Многие терминалы Шаблон:S годов содержали переключатель поведения клавиши Шаблон:Key, позволяющий посылать при нажатии на неё либо последовательность Во многих языках программирования обозначается как |
| Шаблон:Видимый якорь | Шаблон:0x | vertical tab | вертикальная табуляция | Во многих языках программирования обозначается как \v.
|
| Шаблон:Видимый якорь | Шаблон:0x | form feed | «прогон страницы», новая страница | Команда для принтера: продолжить печать с начала следующего листа.
Во многих языках программирования обозначается как |
| Шаблон:Видимый якорь | Шаблон:0x | carriage return | возврат каретки | Команда для принтера: продолжить печать с начала текущей строки (не с новой строки). В классических версиях операционной системы Mac OS символ CR обозначал конец строки текстового файла. С клавиатуры символ CR может быть введён нажатием комбинации клавиш: Шаблон:Key.
Во многих языках программирования обозначается как |
| Шаблон:Видимый якорь | Шаблон:0x | shift out | «Переключиться на другую ленту (кодировку)» | Другая лента обычно была окрашена в красный цвет. В дальнейшем символ использовался для переключения на национальную кодировку. |
| Шаблон:Видимый якорь | Шаблон:0x | shift in | «Переключиться на исходную ленту (кодировку)» | Команда для выполнения действия, обратного действию SO.
|
| Шаблон:Видимый якорь | Шаблон:0x | data link escape | «Экранирование канала данных» | Любые символы, следующие после DLE, должны восприниматься как данные, а не как управляющие символы.
|
| Шаблон:Видимый якорь | Шаблон:0x | device control 1 | Первый символ управления устройством | Команда включить устройство чтения перфоленты. |
| Шаблон:Видимый якорь | Шаблон:0x | device control 2 | Второй символ управления устройством | Команда включить перфоратор. |
| Шаблон:Видимый якорь | Шаблон:0x | device control 3 | Третий символ управления устройством | Команда выключить устройство чтения перфоленты. |
| Шаблон:Видимый якорь | Шаблон:0x | device control 4 | Четвёртый символ управления устройством | Команда выключить перфоратор. |
| Шаблон:Видимый якорь | Шаблон:0x | negative acknowledgement | «Не подтверждаю!» | Обратно символу ACK.
|
| Шаблон:Видимый якорь | Шаблон:0x | synchronous idle | синхронное ожидание | Символ SYN использовался (передавался) для сохранения синхронизма передатчика и приёмника в системах синхронной связи, когда фактически передавать было нечего.
|
| Шаблон:Видимый якорь | Шаблон:0x | end of transmission block | конец блока передаваемых данных | Иногда данные (по техническим причинам) разбивались на блоки. |
| Шаблон:Видимый якорь | Шаблон:0x | cancel | «Отмена» | Отмена того, что было передано ранее. |
| Шаблон:Видимый якорь | Шаблон:0x | end of medium | «Конец носителя» | Кончилась бумага, перфолента, магнитная лента и т. п. |
| Шаблон:Видимый якорь | Шаблон:0x | substitute | «Замена» | Символ ставится:
В настоящее время символ вставляется нажатием комбинации клавиш Шаблон:Key и используется для обозначения конца файла в операционных системах DOS и Windows. |
| Шаблон:Видимый якорь | Шаблон:0x | escape | экранирование | Признак того, что символ, следующий после ESC, имеет какое-то другое (отличное от определённого в ASCII) значение. Обычно после символа ESC следуют управляющие последовательности; в операционной системе DOS они реализуются драйвером ANSI.SYS.
|
| Шаблон:Видимый якорь | Шаблон:0x | delete | «Забой», стереть последний символ | Символом DEL (состоящим из семи единичных битов) можно было «забить» любой символ. Устройства и программы игнорировали DEL так же, как и NUL.
Код этого символа происходит из первых текстовых процессоров с памятью на перфоленте: в них удаление символа происходило «забиванием» его кода отверстиями (обозначавшими логические единицы). |
Поддерживалось разделение данных на 4 уровня:
| Символ | Код | Расшифровка | Перевод | Описание |
|---|---|---|---|---|
| Шаблон:Видимый якорь | Шаблон:0x | file separator | разделитель файлов | сообщение могло состоять из файлов |
| Шаблон:Видимый якорь | Шаблон:0x | group separator | разделитель групп | файлы могли состоять из групп |
| Шаблон:Видимый якорь | Шаблон:0x | record separator | разделитель записей | группы могли состоять из записей |
| Шаблон:Видимый якорь | Шаблон:0x | unit separator | разделитель полей | записи могли состоять из полей |
Наложение символов
С помощью символа BS (возврат на один символ) на печатающем устройстве (например, АЦПУ телетайпа или матричном принтере) можно напечатать один символ поверх другого. В ASCII таким же способом можно добавить к буквам диакритические знакиШаблон:Sfn, например:
aBS'→ Шаблон:MonoaBS`→ Шаблон:MonoaBS^→ Шаблон:MonoaBS"→ Шаблон:MonooBS/→ Шаблон:MonocBS,→ Шаблон:MononBS~→ Шаблон:Mono
Разработчикам шрифтов рекомендовалось учитывать возможность использования двойной кавычки ("), апострофа ('), запятой (,) и тильды (~) в качестве диакритических знаков, а грависа (`) — в качестве открывающей одиночной кавычкиШаблон:Sfn. Поэтому в некоторых шрифтах, предназначенных для использования в терминалах (в частности, Terminus) апостроф может рисоваться с наклоном вправо, а тильда — быть сдвинутой вверх, чтобы они могли использоваться в качестве акута (´) и тильды сверху (˜).
Если в одной позиции дважды напечатать один и тот же символ, получится жирный символ; если в одной позиции напечатать символ и подчёркивание (_), получится подчёркнутый символ:
aBSa→ Шаблон:MonoaBS_→ Шаблон:Mono
Эта техника до сих пор используется, например, в справочной системе man.
Представление ASCII в ЭВМ
На многих компьютерах Шаблон:S годов минимально адресуемой единицей памяти было машинное слово, размер которого, как правило, был в несколько раз больше размера символа. Зачастую для экономии памяти на таких компьютерах в одно слово упаковывали несколько символов. Так, например, на мейнфреймах PDP-10 с размером слова в 36 бит поначалу использовали шестибитные символы, размещая по 6 символов в слове, а после перехода на ASCII в одном слове стали размещать либо 5 семибитных символов (1 бит оставался незадействованным), либо 4 девятибитных символа<ref>Шаблон:Cite web</ref>.
С конца Шаблон:S годов на большинстве выпускаемых компьютеров минимально адресуемой единицей памяти стал 8-битный байт (октет), поэтому на них используются не 7-битные, а 8-битные символы. Обычно символ ASCII дополняют до 8 бит, добавляя один нулевой бит в качестве старшего бита октета.
USASCII-8
На мейнфреймах IBM/360 применялся другой способ дополнения символа ASCII до 8 бит: Шаблон:S бит (если первым считать самый младший бит) перемещается в Шаблон:S, а бывший Шаблон:S «раздваивается» и копируется и в Шаблон:S бит, и в Шаблон:S<ref>Шаблон:Статья</ref>. Такую кодировку называли USASCII-8Шаблон:Sfn.
| .0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0. | NUL | SOM | EOA | EOM | EQT | WRU | RU | BELL | BKSP | HT | LF | VT | FF | CR | SO | SI |
| 1. | DC0 | DC1 | DC2 | DC3 | DC4 | ERR | SYNC | LEM | S0 | S1 | S2 | S3 | S4 | S5 | S6 | S7 |
| 2. | ||||||||||||||||
| 3. | ||||||||||||||||
| 4. | BLANK | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 5. | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 6. | ||||||||||||||||
| 7. | ||||||||||||||||
| 8. | ||||||||||||||||
| 9. | ||||||||||||||||
| A. | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| B. | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ↑ | ← |
| C. | ||||||||||||||||
| D. | ||||||||||||||||
| E. | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | |
| F. | p | q | r | s | t | u | v | w | x | y | z | ESC | DEL |
Ввод с клавиатуры
Расположение символов ASCII на клавиатуре согласно ANSI X4.14—1971: символы верхнего регистра вводятся в сочетании с клавишей Шаблон:Key, а управляющие символы — с Шаблон:Key<ref>ANSI X4.14—1971: Alphanumeric Keyboard Arrangements Accommodating the Character Sets of ASCII and ASCSOCRШаблон:Ref</ref>. Шаблон:Клавиатура компьютера
На кодах символов ASCII основаны используемые в программировании промежуточные кроссплатформенные коды нажатых клавиш (в противовес скан-кодам IBM PC и прочим внутренним кодам). Ниже показано соответствие данных кодов клавишам для латинской раскладки QWERTY<ref>Шаблон:Cite web</ref>. Шаблон:Клавиатура компьютера
Национальные варианты и расширения
7-битные варианты
Шаблон:Якорь
Возможность адаптации ASCII под нужды других стран предусмотрена сразу в трёх тесно взаимосвязанных стандартах, появившихся во второй половине Шаблон:S годов, — ECMA-6 Европейской ассоциации производителей компьютеров, Шаблон:S Международной организации по стандартизации (ныне — Шаблон:S) и Рекомендации V.3 (Международный алфавит № 5) Международного консультативного комитета по телеграфии и телефонии (ныне — Рекомендация Шаблон:Iw (Международный справочный алфавит) Сектора стандартизации электросвязи МСЭ). Для этого предлагается заменять символы @, [, \, ], ^, `, {, |, } и ~ на национальные. Кроме того, допускается замена знака решётки (#) на знак фунта (£), а знака доллара ($) — на знак валюты (¤). Унифицированный вариант кода, не содержащий национальные символы, при этом обозначается как Шаблон:Lang-en2 (сокр. от англ. Шаблон:Lang-en2 — «международная ссылочная версия»)Шаблон:Efn. Шаблон:S IRV был утверждён в Советском Союзе в Шаблон:S (ныне — Шаблон:S<ref>Шаблон:ГОСТ.</ref>) под названием КОИ-7 Н0.
Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита и др.) существовали и более радикальные модификации ASCII:
- в одних на месте строчных латинских букв размещались национальные символы (для русского (КОИ-7 Н2) и греческого вариантов — заглавные буквы);
- в других предусматривалось переключение между ASCII (Шаблон:S IRV) и национальным вариантом кода «на лету» с помощью символов SO и SI; в этом случае в национальном варианте можно было полностью заменить латинские буквы на национальные символы (как, например, в КОИ-7 Н1).
8-битные расширения
В Шаблон:S годах начали появляться производные 8-битные кодировки (кодовые страницы), содержащие 28 = 256 кодовых позиций, в которых нижняя половина (позиции Шаблон:0x—Шаблон:0x) кодовой таблицы, как правило, полностью совпадает с ASCII, а верхняя (позиции Шаблон:0x—Шаблон:0x) служит для размещения дополнительных, в том числе национальных, символов. Подобные ASCII-совместимые кодировки, получившие неофициальное собирательное название «Шаблон:Iw», оказались удобнее упомянутых ранее 7-битных вариантов и широко использовались вплоть до начала повсеместного внедрения Юникода. Впрочем, отсутствие единого подхода к размещению дополнительных символов в их кодовых таблицах (например, кириллицы в [[ISO 8859-5|Шаблон:S-5]], KOI8-R, Windows-1251 и т. д.) порождало множество проблем. Так, например, когда почтовые клиенты отправителя и получателя использовали различные кодировки для интерпретации текста письма, тот (за исключением символов ASCII) становился нечитаемым (превращался в так называемые кракозябры).
ISO/IEC 10646 и Юникод
Шаблон:Main Символы ASCII включены в кодированные наборы символов двух тесно взаимосвязанных современных стандартов — Шаблон:S (UCS) и Юникода — под теми же самыми кодами (Шаблон:0x—Шаблон:0x), благодаря чему их представление UTF-8 полностью обратно совместимо с 8-битным (см. выше) представлением ASCII. Таким образом, Шаблон:S и Юникод можно рассматривать как расширения ASCII.