американский стандартный код для обмена информацией
ASCII таблица
ASCII — A merican S tandard C ode for I nformation I nterchange.
ASCII была разработана (1963 год) для кодирования символов, коды которых помещались в 7 бит (128 символов). Со временем кодировка была расширена до 8-ми бит (256 символов), коды первых 128-и символов не изменились.
Управляющие символы ASCII (код символа 0-31)
Первые 32 символа в ASCII-таблице не имеют печатных кодов и используются для управления периферийными устройствами, телетайпами, принтерами и т.д.
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description |
---|---|---|---|---|---|---|---|
0 | 000 | 0x00 | 00000000 | NUL \0 | & #000; | Null char | |
1 | 001 | 0x01 | 00000001 | SOH | & #001; | Start of Heading | |
2 | 002 | 0x02 | 00000010 | STX | & #002; | Start of Text | |
3 | 003 | 0x03 | 00000011 | ETX | & #003; | End of Text | |
4 | 004 | 0x04 | 00000100 | EOT | & #004; | End of Transmission | |
5 | 005 | 0x05 | 00000101 | ENQ | & #005; | Enquiry | |
6 | 006 | 0x06 | 00000110 | ACK | & #006; | Acknowledgment | |
7 | 007 | 0x07 | 00000111 | BEL | & #007; | Bell | |
8 | 010 | 0x08 | 00001000 | BS | & #008; | Back Space | |
9 | 011 | 0x09 | 00001001 | HT \t | & #009; | Tab | |
10 | 012 | 0x0A | 00001010 | LF \n | & #010; | Новая строка | |
11 | 013 | 0x0B | 00001011 | VT | & #011; | Vertical Tab | |
12 | 014 | 0x0C | 00001100 | FF | & #012; | Form Feed | |
13 | 015 | 0x0D | 00001101 | CR \r | & #013; | Возврат каретки | |
14 | 016 | 0x0E | 00001110 | SO | & #014; | Shift Out / X-On | |
15 | 017 | 0x0F | 00001111 | SI | & #015; | Shift In / X-Off | |
16 | 020 | 0x10 | 00010000 | DLE | & #016; | Data Line Escape | |
17 | 021 | 0x11 | 00010001 | DC1 | & #017; | Device Control 1 (oft. XON) | |
18 | 022 | 0x12 | 00010010 | DC2 | & #018; | Device Control 2 | |
19 | 023 | 0x13 | 00010011 | DC3 | & #019; | Device Control 3 (oft. XOFF) | |
20 | 024 | 0x14 | 00010100 | DC4 | & #020; | Device Control 4 | |
21 | 025 | 0x15 | 00010101 | NAK | & #021; | Negative Acknowledgement | |
22 | 026 | 0x16 | 00010110 | SYN | & #022; | Synchronous Idle | |
23 | 027 | 0x17 | 00010111 | ETB | & #023; | End of Transmit Block | |
24 | 030 | 0x18 | 00011000 | CAN | & #024; | Cancel | |
25 | 031 | 0x19 | 00011001 | EM | & #025; | End of Medium | |
26 | 032 | 0x1A | 00011010 | SUB | & #026; | Substitute | |
27 | 033 | 0x1B | 00011011 | ESC | & #027; | Escape | |
28 | 034 | 0x1C | 00011100 | FS | & #028; | File Separator | |
29 | 035 | 0x1D | 00011101 | GS | & #029; | Group Separator | |
30 | 036 | 0x1E | 00011110 | RS | & #030; | Record Separator | |
31 | 037 | 0x1F | 00011111 | US | & #031; | Unit Separator | |
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description |
Печатные символы ASCII (код символа 32-127)
Буквы, цифры, знаки препинания и другие символы расположенные на клавиатуре (англ.).
Решайтесь на великие поступки — ASCII
ASCII — это самый простой из существующих коммуникационных протоколов и единственный формат данных, который может декодировать любая из существующих компьютерных систем.
Момент посадки на Марс ровера NASA Perseverance (Настойчивость) стал историческим событием. Человечество впервые увидело нечто подобное. Многие люди с замиранием сердца наблюдали за происходящим. «Настойчивость» многие годы будет служить для нас источником вдохновения.
Каждое изображение, поступающее с Марса после успешной посадки ровера, содержало в себе какой-то сюрприз. Одним из таких сюрпризов стало сообщение, зашифрованное в раскраске парашюта марсохода.
Интернет-ищейки заявили о том, что им удалось расшифровать скрытое сообщение, нанесённое на купол парашюта, который помог роверу безопасно приземлиться на поверхность Красной планеты. Как оказалось, фраза «Dare Mighty Things» («Решайтесь на великие поступки») — девиз лаборатории реактивного движения NASA (Jet Propulsion Laboratory) — была закодирована на парашюте с использованием красных и белых полос, представляющих двоичный компьютерный код. Этот код, что неудивительно, можно, используя некоторые вычисления, перевести в кодировку ASCII и, в итоге, понять то, что в нём скрыто.
Ровер сделал этот снимок парашюта в процессе посадки на поверхность Марса
Пользователи Reddit и Twitter обратили внимание на то, что красно-белый узор похож на нечто, способное нести в себе какой-то смысл. Они расшифровали послание, решив, что красные фрагменты представляют единицы, а белые — нули.
Эта история разлетелась по всему миру, благодаря ей кодировка ASCII, о которой говорят не особенно часто, оказалась у всех на слуху.
В этом материале мы поговорим об ASCII, немного коснёмся истории этой кодировки, разберём пример её применения в программном коде. Прочитав эту статью, вы поймёте, что очень сложно не полюбить ASCII, кое-что о ней узнав.
Протокол ASCII
ASCII — это кодировка. Это не протокол. Протоколы могут быть построены на основе ASCII.
На самом деле, так оно и есть, но во множестве документов, которые можно встретить в интернете, ASCII называют не только «кодировкой», но и «протоколом». Поэтому я заранее хочу обратить на это ваше внимание, так как могу называть ASCII и так и так.
ASCII можно назвать самым простым коммуникационным протоколом для передачи текста. При его использовании передаются только обычные и управляющие ASCII-символы. Он предусматривает минимальный контроль ошибок или полное его отсутствие.
Может, в это сложно поверить, но ASCII — это весьма мощная технология. Это — единственный формат данных, который может декодировать любая из существующих компьютерных систем.
Немногие знают о том, что кодировка ASCII появилась в 1960-х годах, когда Лабораториям Белла (Bell Labs) понадобился стандартный способ для передачи текста. Сотрудники Bell Labs реорганизовали телеграфные коды, разобрали их и, совместно с Американской ассоциацией стандартов (American Standards Association, ASA), сформировали ASCII (American Standard Code for Information Interchange, Американский стандартный код для обмена информацией). 1960-е — это время бурного развития компьютерных технологий. Создатели вычислительных машин использовали ASCII. В результате эта кодировка и стала общепризнанным стандартом передачи информации.
Почему вокруг так много всего связано с ASCII? Дело в том, что это отражает то, как люди общаются друг с другом. Для общения мы используем буквы, цифры и специальные символы. В мире, например, очень много всего такого, что надо как-то маркировать. Речь идёт о товарных этикетках, о коробках, об автомобильных покрышках, и много о чём ещё. Компьютеры должны считывать маркировку, что они и делают, используя сканеры штрих-кодов. Потом, если речь идёт о штрих-кодах, их надо преобразовать в ASCII-символы, с которыми уже выполняются дальнейшие действия.
Типичный пример использования ASCII — это составление команд и запросов, которые можно отправлять промышленным устройствам, которые, реагируя на них, выполняют какие-то действия, или отправляют в ответ сведения о собственном состоянии.
Что такое протокол?
Представим, что вы попали на аудиенцию к королеве. При этом кто-то из дворцовых служащих сообщает вам о том, каких правил принято придерживаться во время этого мероприятия. Эти правила и называют протоколом. Понятие «протокол» часто используется в компьютерном мире. Вы вводите веб-адрес в адресную строку браузера, нажимаете Enter, это приводит к выполнению множества операций, браузер и сервер обмениваются данными, после чего запрошенная страница выводится на экране. В ходе обмена данными между сервером и браузером используется определённый набор протоколов.
Понятие «сетевой протокол» скрывает в себе множество смысловых уровней. Обычно «протокол» — это механизм, используемый для передачи пакетов с данными между компьютерами. Но тут мы не будем обращать внимание на транспортную составляющую обмена данными. Мы сосредоточимся на исследовании тех данных, которые передаются по сетям. В частности — изучим сообщения, которые программы отправляют другим программам.
Биты, байты и представление информации
Итак, мы уже немного поговорили об ASCII, а ниже я продемонстрирую примеры работы с ASCII в коде. Но прежде чем я это сделаю, предлагаю немного отклониться от нашей основной темы и поговорить о том, как в цифровом мире кодируется и хранится информация.
«Цифровое представление информации» — это когда всё что угодно представляют исключительно с помощью чисел. Обычная последовательность работы при таком подходе выглядит так:
Двоичные, восьмеричные, десятичные, шестнадцатеричные числа
Существует множество способов представления чисел. Например, возьмём двоичное число 10011111.
Оно равнозначно следующим числам:
Для того чтобы передавать данные по компьютерным сетям эти данные надо представлять в виде байтов. Байт — это группа из 8 битов. С помощью одного байта можно закодировать десятичное число в диапазоне от 0 до 255.
Эта конструкция используется для представления неких данных. Ведь, как известно, компьютер не может хранить «буквы», «цифры», «изображения» или что угодно другое. Компьютер может работать лишь с битами. А бит может пребывать лишь в одном из двух значений: «да» или «нет», «истина» или «ложь», «0» или «1». Называть их можно по-разному, но всё сводится к тому, что их всего два.
Для того чтобы использовать биты для представления чего-то, отличного от «нулей» и «единиц», нужны некие правила. Нужна возможность преобразовывать последовательности битов в нечто вроде букв, цифр, изображений. Делается это с применением некоей схемы кодирования, которую обычно называют просто «кодировкой».
Тут мы говорим о схеме кодирования ASCII. В этой кодировке определено 128 символов (для кодирования 1 символа используется 7 битов). Ниже приведён её фрагмент.
Биты | Символы |
1000001 | A |
1000010 | B |
1000011 | C |
1000100 | D |
1000101 | E |
1000110 | F |
Фактически, при использовании ASCII работа ведётся не с «символами» или с «текстами». Всё сводится к манипулированию битами, «видимыми» через несколько слоёв абстракции.
Помимо ASCII существуют и другие способы кодирования символов, другие способы преобразования последовательностей битов в текстовые данные. Например, это набор символов Unicode. Если имеется соответствие между битами, из которых составлена строка, и кодами Unicode-символов — битовое представление строки можно преобразовать в нечто осмысленное. Если такого соответствия нет — подобное преобразование выполнить не получится.
Для преобразования двоичных данных в числа, которые соответствуют номерам из набора символов Unicode (и для преобразования кодов символов в двоичные данные), могут применяться различные кодировки. В частности, это кодировка UTF-8. Она совместима с ASCII, для представления ASCII-символов в ней применяются 1-байтные коды. Для представления символов из набора Unicode в ней может применяться до 4 байтов на 1 символ.
Если две компьютерные системы обмениваются друг с другом данными, им нужно договориться о том, какую именно кодировку они используют. Например, текстовые данные, представленные на этой странице, закодированы с использованием UTF-8, о чём сервер, передавший страницу, сообщает браузеру, который её принял и вывел на экран.
STX / ETX (протокол ASCII)
Помните вышеприведённую конструкцию? Повторим её ещё раз:
Сокращения STX и ETX обычно используются для обозначения управляющих символов ASCII. У них нет графического представления, они не могут быть выведены на экран, поэтому там, где они используются, обычно применяют их сокращённые наименования. На практике они заменяются на соответствующие ASCII-символы. А именно, STX заменяется на ASCII-символ с кодом 0x02, а ETX — на символ с кодом 0x03.
В записи кодов управляющих символов использована конструкция 0x. Она указывает на применение шестнадцатеричных кодов. Например, 0x01 — это, в десятичном представлении, 1, а в двоичном — 00000001. 0x10 — это 16 в десятичном представлении и 00010000 в двоичном.
С помощью управляющих символов STX (Start of TeXt, начало текста) и ETX (End of TeXt, конец текста) можно сформировать простой пакет, в который упаковываются пользовательские данные. В таком пакете, помимо признаков начала и конца текста, присутствует контрольная сумма (checksum), которая позволяет организовать надёжную передачу данных. Возможно, вы видели подобные конструкции в коде, предназначенном для обмена данными с некими устройствами по сети или через порт RS232.
Пример кода: отправка ASCII-команд через TCP/IP
Исходя из предположения о том, что у нас уже имеется установленное сетевое соединение, нам, для организации обмена данными между программами, нужно всего лишь отправить по этому соединению соответствующую строку. При этом, например, символ STX будет представлен в виде ‘\x02’, а передача H — в виде ‘\x02H\x04’.
ASCII-команды можно отправлять с использованием различных каналов связи. В моём примере будет использован TCP-канал. Пример написан на C# (мы рассмотрим и JavaScript-пример, рассчитанный на платформу Node.js). Этот код будет понятен и тем, кто знает Java.
▍Обзор проекта
Итак, мы будем разрабатывать простое клиент-серверное TCP-приложение.
Вот пример выходных данных, генерируемых в ходе работы нашей клиент-серверной системы.
Пример работы клиент-серверной системы
▍И что всё это значит?
Если вы задались вопросом, который вынесен в заголовок этого раздела — знайте, что меня это порадовало. Сейчас я всё это объясню, прибегнув к фрагментам кода моего приложения. Его полную версию, с которой вы можете поэкспериментировать самостоятельно, можно найти в этом репозитории на GitHub.
▍TCP-клиент
AsciiDemo.TestApp — это наш TCP-клиент. Вот его код (файл Program.cs ):
Код класса Program
Метод Main является точкой входа в приложение.
Этот код устроен очень просто, но если у вас есть по нему вопросы — можете задать их мне. Здесь мы сначала подготавливаем некоторые команды, используя кодировку ASCII, затем преобразуем их в байты и отправляем по сети TCP-серверу. Тут же мы выводим сообщения в консоль.
Сеанс связи с точки зрения клиента
Обратите внимание на то, что мы получаем от сервера подтверждения (ACK/NAK) о получении данных (об этом мы поговорим ниже). В результате оказывается, что наш TCP-клиент может не только отправлять команды серверу, но и получать от сервера ответы.
В консоли можно видеть некоторые необычные символы. Это — визуальные представления управляющих символов, о которых мы говорили выше.
Код метода BuildCommand
▍TCP-сервер
AsciiDemo.TCPListenerApp — это простейший TCP-сервер. Он прослушивает заданный порт, ожидая поступления команд. После получения команды он просто выводит её в консоль (если подобные команды используются для управления неким устройством — оно может, например, выключиться, или прочесть показания некоего датчика), а затем отправляет ответ. В данном случае выполняется отправка ответов ACK или NAK, имитирующих, соответственно, успешное или неудачное выполнение команды. Если нужно — можно организовать любую другую реакцию сервера на подобные команды.
Вот как выглядит то, что выводит в консоль сервер.
Сеанс связи с точки зрения сервера
Как видно, каждый раз, получая команду от клиента, сервер выводит её в консоль, а после этого отправляет клиенту ACK или NAK. То, что происходит в это время на клиенте, мы уже видели.
Вот код метода Main TCP-сервера:
Тут всё устроено очень просто. Сначала мы запускаем сервер на заданном IP-адресе и порте, а потом сервер, в соответствующем цикле, ждёт поступления данных. Вот код этого цикла.
Цикл, используемый в работе сервера
Байты мы преобразуем в ASCII-символы, выводим их в консоль, а после этого отправляем клиенту байты, соответствующие кодам управляющих символов ACK или NAK.
Получение данных от клиента и отправка ему ответа
▍Node.js-реализация клиента
Как уже было сказано, подобный функционал можно реализовать и с использованием других языков программирования. Вот, например, вариант реализации простого TCP-клиента для платформы Node.js.
TCP-клиент для Node.js
Вот что выведет в консоль клиент.
Сеанс связи с точки зрения Node.js-клиента
Клиент подключается к серверу, отправляет ему две команды и выводит ACK/NAK-ответы сервера.
Сервер получает команды от клиента и отправляет ему ответы.
Итоги
Полагаю, что ASCII — это просто потрясающе. Это простая и мощная кодировка, на основе которой несложно создавать коммуникационные протоколы. И она будет актуальна до тех пор, пока люди общаются, используя буквы и цифры.
Использование ASCII при составлении команд и запросов восходит к временам ранних мейнфреймов IBM, при работе с которыми применялись терминалы. Оператор вводил на терминале команды и нажимал на клавишу Return для отправки их компьютеру. Все взаимодействия с этими компьютерами, так как работали с ними люди, были основаны на стандартном ASCII.
Везде, где используется некая маркировка чего-либо, применяется ASCII. Например, каждый сканер штрих-кодов, в сущности, работает с последовательностями ASCII-символов. Эти символы где-то хранятся, их нужно распечатывать, иногда их надо преобразовывать в числовые данные.
Даже сегодня, когда в нашем распоряжении имеются современные протоколы для промышленных устройств, ASCII не теряет актуальности. И так будет ещё очень и очень долго.
Приходилось ли вам создавать собственные реализации протоколов, основанных на ASCII и применяемых для обмена данными с некими устройствами?
Управление по присвоению номеров в Интернете (IANA) предпочитает имя US-ASCII для этой кодировки символов.
СОДЕРЖАНИЕ
Обзор
Использование формата ASCII для сетевого обмена было описано в 1969 году. Этот документ был официально повышен до уровня Интернет-стандарта в 2015 году.
История
Комитет X3 внес другие изменения, в том числе другие новые символы ( скобки и вертикальные черты), переименовав некоторые управляющие символы (SOM стал началом заголовка (SOH)) и переместив или удалив другие (RU был удален). Впоследствии ASCII был обновлен как USAS X3.4-1967, затем USAS X3.4-1968, ANSI X3.4-1977 и, наконец, ANSI X3.4-1986.
Изменения стандарта ASCII:
Соображения по дизайну
Битовая ширина
ITA2, в свою очередь, была основана на 5-битном телеграфном коде, который Эмиль Бодо изобрел в 1870 году и запатентовал в 1874 году.
Внутренняя организация
Коды управления, которые считались важными для передачи данных, включали начало сообщения (SOM), конец адреса (EOA), конец сообщения (EOM), конец передачи (EOT), «кто вы?» (WRU), «а ты?» (RU), управление зарезервированным устройством (DC0), синхронный режим ожидания (SYNC) и подтверждение (ACK). Они были расположены так, чтобы максимизировать расстояние Хэмминга между их битовыми комбинациями.
Порядок символов
Порядок ASCII-код также называется ASCIIbetical заказ. Сопоставление данных иногда выполняется в этом порядке, а не в «стандартном» алфавитном порядке ( последовательность сопоставления ). Основные отклонения в порядке ASCII:
Промежуточный порядок преобразует прописные буквы в строчные перед сравнением значений ASCII.
Группы персонажей
Управляющие символы
ASCII резервирует первые 32 кода (десятичные числа 0–31) для управляющих символов : коды, изначально предназначенные не для представления информации для печати, а для управления устройствами (например, принтерами ), использующими ASCII, или для предоставления метаинформации о данных. потоки, например, хранящиеся на магнитной ленте.
Когда 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 соответственно.
Удалить и Backspace
Побег
Конец линии
Компьютеры, подключенные к ARPANET, включали машины под управлением операционных систем, таких как TOPS-10 и TENEX, использующие окончания строк CR-LF, машины под управлением операционных систем, таких как Multics, использующие окончания строк LF, и машины, работающие под управлением операционных систем, таких как OS / 360, которые представляли строки как количество символов, за которым следуют символы строки, и в котором используется EBCDIC, а не ASCII. Протокол Telnet определил ASCII « сетевой виртуальный терминал » (NVT), так что соединения между хостами с различными соглашениями о завершении строк и наборами символов могли поддерживаться путем передачи стандартного текстового формата по сети. Telnet использовал ASCII вместе с окончаниями строк CR-LF, а программное обеспечение, использующее другие соглашения, переводило бы между местными соглашениями и NVT. Протокол передачи файлов принят протокол Telnet, включая использование сетевого виртуального терминала, для использования при передаче команд и передачи данных в режиме ASCII по умолчанию. Это усложняет реализацию этих протоколов, а также других сетевых протоколов, таких как используемые для электронной почты и World Wide Web, в системах, не использующих соглашение NVT о завершении строк CR-LF.
Конец файла / потока
В соглашениях библиотеки C и Unix нулевой символ используется для завершения текстовых строк ; такие строки с завершающим нулем могут называться сокращенно ASCIZ или ASCIIZ, где Z означает «ноль».
Таблица контрольных кодов
Двоичный | Октябрь | Декабрь | Шестигранник | Сокращенное название | Имя (1967) | |||||
---|---|---|---|---|---|---|---|---|---|---|
1963 г. | 1965 г. | 1967 | ||||||||
000 0000 | 000 | 0 | 00 | НУЛЕВОЙ | NUL | ␀ | ^ @ | \ 0 | Нулевой | |
000 0001 | 001 | 1 | 01 | SOM | SOH | ␁ | ^ А | Начало заголовка | ||
000 0010 | 002 | 2 | 02 | EOA | STX | ␂ | ^ B | Начало текста | ||
000 0011 | 003 | 3 | 03 | МНВ | ETX | ␃ | ^ C | Конец текста | ||
000 0100 | 004 | 4 | 04 | EOT | ␄ | ^ D | Конец передачи | |||
000 0101 | 005 | 5 | 05 | WRU | ENQ | ␅ | ^ E | Расследование | ||
000 0110 | 006 | 6 | 06 | RU | ACK | ␆ | ^ F | Подтверждение | ||
000 0111 | 007 | 7 | 07 | КОЛОКОЛЬЧИК | BEL | ␇ | ^ G | \ а | Колокол | |
000 1000 | 010 | 8 | 08 | FE0 | BS | ␈ | ^ H | \ b | Backspace | |
000 1001 | 011 | 9 | 09 | HT / SK | HT | ␉ | ^ Я | \ т | Горизонтальная вкладка | |
000 1010 | 012 | 10 | 0A | LF | ␊ | ^ J | \ п | Перевод строки | ||
000 1011 | 013 | 11 | 0B | VTAB | VT | ␋ | ^ K | \ v | Вертикальная табуляция | |
000 1100 | 014 | 12 | 0C | FF | ␌ | ^ L | \ f | Подача формы | ||
000 1101 | 015 | 13 | 0D | CR | ␍ | ^ M | \р | Возврат каретки | ||
000 1110 | 016 | 14 | 0E | ТАК | ␎ | ^ N | Сдвиг | |||
000 1111 | 017 | 15 | 0F | SI | ␏ | ^ O | Перейти в | |||
001 0000 | 020 | 16 | 10 | DC0 | DLE | ␐ | ^ P | Выход из канала передачи данных | ||
001 0001 | 021 | 17 | 11 | DC1 | ␑ | ^ Q | Управление устройством 1 (часто XON ) | |||
001 0010 | 022 | 18 | 12 | DC2 | ␒ | ^ R | Контроль устройств 2 | |||
001 0011 | 023 | 19 | 13 | DC3 | ␓ | ^ S | Управление устройством 3 (часто XOFF ) | |||
001 0100 | 024 | 20 | 14 | DC4 | ␔ | ^ Т | Контроль устройств 4 | |||
001 0101 | 025 | 21 год | 15 | ERR | НАК | ␕ | ^ U | Отрицательное подтверждение | ||
001 0110 | 026 | 22 | 16 | СИНХРОНИЗАЦИЯ | SYN | ␖ | ^ V | Синхронный холостой ход | ||
001 0111 | 027 | 23 | 17 | LEM | ETB | ␗ | ^ W | Конец блока передачи | ||
001 1000 | 030 | 24 | 18 | S0 | ЖЕСТЯНАЯ БАНКА | ␘ | ^ X | Отмена | ||
001 1001 | 031 | 25 | 19 | S1 | ЭМ | ␙ | ^ Y | Конец среднего | ||
001 1010 | 032 | 26 год | 1А | S2 | SS | SUB | ␚ | ^ Z | Заменять | |
001 1011 | 033 | 27 | 1B | S3 | ESC | ␛ | ^ [ | \ e | Побег | |
001 1100 | 034 | 28 год | 1С | S4 | FS | ␜ | ^ \ | Разделитель файлов | ||
001 1101 | 035 | 29 | 1D | S5 | GS | ␝ | ^] | Разделитель групп | ||
001 1110 | 036 | 30 | 1E | S6 | RS | ␞ | ^^ | Разделитель записей | ||
001 1111 | 037 | 31 год | 1F | S7 | нас | ␟ | ^ _ | Разделитель единиц | ||
111 1111 | 177 | 127 | 7F | DEL | ␡ | ^? | Удалить |
Другие изображения могут использоваться специальным оборудованием, например графика ISO 2047 или шестнадцатеричные числа.
Печатные символы
Шестнадцатеричный код 7F соответствует непечатаемому управляющему символу «удалить» (DEL) и поэтому не указан в этой таблице; это описано в диаграмме предыдущего раздела. Более ранние версии ASCII использовали стрелку вверх вместо символа каретки (5E в шестнадцатеричном формате ) и стрелку влево вместо подчеркивания (5F в шестнадцатеричном формате ).
Двоичный | Октябрь | Декабрь | Шестигранник | Глиф | ||
---|---|---|---|---|---|---|
1963 г. | 1965 г. | 1967 | ||||
010 0000 | 040 | 32 | 20 | Космос | ||
010 0001 | 041 | 33 | 21 год | ! | ||
010 0010 | 042 | 34 | 22 | » | ||
010 0011 | 043 | 35 год | 23 | # | ||
010 0100 | 044 | 36 | 24 | $ | ||
010 0101 | 045 | 37 | 25 | % | ||
010 0110 | 046 | 38 | 26 год | & | ||
010 0111 | 047 | 39 | 27 | ‘ | ||
010 1000 | 050 | 40 | 28 год | ( | ||
010 1001 | 051 | 41 год | 29 | ) | ||
010 1010 | 052 | 42 | 2А | * | ||
010 1011 | 053 | 43 год | 2B | + | ||
010 1100 | 054 | 44 год | 2C | , | ||
010 1101 | 055 | 45 | 2D | — | ||
010 1110 | 056 | 46 | 2E | . | ||
010 1111 | 057 | 47 | 2F | / | ||
011 0000 | 060 | 48 | 30 | 0 | ||
011 0001 | 061 | 49 | 31 год | 1 | ||
011 0010 | 062 | 50 | 32 | 2 | ||
011 0011 | 063 | 51 | 33 | 3 | ||
011 0100 | 064 | 52 | 34 | 4 | ||
011 0101 | 065 | 53 | 35 год | 5 | ||
011 0110 | 066 | 54 | 36 | 6 | ||
011 0111 | 067 | 55 | 37 | 7 | ||
011 1000 | 070 | 56 | 38 | 8 | ||
011 1001 | 071 | 57 год | 39 | 9 | ||
011 1010 | 072 | 58 | 3А | : | ||
011 1011 | 073 | 59 | 3B | ; | ||
011 1100 | 074 | 60 | 3C | |||
011 1101 | 075 | 61 | 3D | знак равно | ||
011 1110 | 076 | 62 | 3E | > | ||
011 1111 | 077 | 63 | 3F | ? | ||
100 0000 | 100 | 64 | 40 | @ | ` | @ |
100 0001 | 101 | 65 | 41 год | А | ||
100 0010 | 102 | 66 | 42 | B | ||
100 0011 | 103 | 67 | 43 год | C | ||
100 0100 | 104 | 68 | 44 год | D | ||
100 0101 | 105 | 69 | 45 | E | ||
100 0110 | 106 | 70 | 46 | F | ||
100 0111 | 107 | 71 | 47 | грамм | ||
100 1000 | 110 | 72 | 48 | ЧАС | ||
100 1001 | 111 | 73 | 49 | я | ||
100 1010 | 112 | 74 | 4А | J | ||
100 1011 | 113 | 75 | 4B | K | ||
100 1100 | 114 | 76 | 4C | L | ||
100 1101 | 115 | 77 | 4D | M | ||
100 1110 | 116 | 78 | 4E | N | ||
100 1111 | 117 | 79 | 4F | О | ||
101 0000 | 120 | 80 | 50 | п | ||
101 0001 | 121 | 81 год | 51 | Q | ||
101 0010 | 122 | 82 | 52 | р | ||
101 0011 | 123 | 83 | 53 | S | ||
101 0100 | 124 | 84 | 54 | Т | ||
101 0101 | 125 | 85 | 55 | U | ||
101 0110 | 126 | 86 | 56 | V | ||
101 0111 | 127 | 87 | 57 год | W | ||
101 1000 | 130 | 88 | 58 | Икс | ||
101 1001 | 131 | 89 | 59 | Y | ||
101 1010 | 132 | 90 | 5А | Z | ||
101 1011 | 133 | 91 | 5B | [ | ||
101 1100 | 134 | 92 | 5C | \ | \ | |
101 1101 | 135 | 93 | 5D | ] | ||
101 1110 | 136 | 94 | 5E | ↑ | ^ | |
101 1111 | 137 | 95 | 5F | ← | _ | |
110 0000 | 140 | 96 | 60 | @ | ` | |
110 0001 | 141 | 97 | 61 | а | ||
110 0010 | 142 | 98 | 62 | б | ||
110 0011 | 143 | 99 | 63 | c | ||
110 0100 | 144 | 100 | 64 | d | ||
110 0101 | 145 | 101 | 65 | е | ||
110 0110 | 146 | 102 | 66 | ж | ||
110 0111 | 147 | 103 | 67 | грамм | ||
110 1000 | 150 | 104 | 68 | час | ||
110 1001 | 151 | 105 | 69 | я | ||
110 1010 | 152 | 106 | 6А | j | ||
110 1011 | 153 | 107 | 6B | k | ||
110 1100 | 154 | 108 | 6C | л | ||
110 1101 | 155 | 109 | 6D | м | ||
110 1110 | 156 | 110 | 6E | п | ||
110 1111 | 157 | 111 | 6F | о | ||
111 0000 | 160 | 112 | 70 | п | ||
111 0001 | 161 | 113 | 71 | q | ||
111 0010 | 162 | 114 | 72 | р | ||
111 0011 | 163 | 115 | 73 | s | ||
111 0100 | 164 | 116 | 74 | т | ||
111 0101 | 165 | 117 | 75 | ты | ||
111 0110 | 166 | 118 | 76 | v | ||
111 0111 | 167 | 119 | 77 | ш | ||
111 1000 | 170 | 120 | 78 | Икс | ||
111 1001 | 171 | 121 | 79 | у | ||
111 1010 | 172 | 122 | 7А | z | ||
111 1011 | 173 | 123 | 7B | < | ||
111 1100 | 174 | 124 | 7C | ACK | ¬ | | |
111 1101 | 175 | 125 | 7D | > | ||
111 1110 | 176 | 126 | 7E | ESC | | | Набор символовТочки, которые в предыдущих версиях (версия 1963 года или черновик 1965 года) представляли другого персонажа, показаны рамкой. Баллы, присвоенные с версии 1963 года, но в остальном не изменившиеся, показаны слегка затененными относительно цвета их легенды. Письмо Число Пунктуация Условное обозначение Другой Неопределенный Персонаж изменен с версии 1963 года или проекта 1965 года. Использовать11 марта 1968 года президент США Линдон Б. Джонсон потребовал, чтобы все компьютеры, приобретенные федеральным правительством США, поддерживали кодировку ASCII, заявив:
ASCII был наиболее распространенной кодировкой символов во всемирной паутине до декабря 2007 года, когда кодировка UTF-8 превзошла ее; UTF-8 обратно совместим с ASCII. Варианты и производныеПо мере распространения компьютерных технологий по всему миру различные органы стандартизации и корпорации разработали множество вариантов ASCII для облегчения выражения неанглийских языков, в которых использовались латинские алфавиты. Некоторые из этих вариантов можно было бы классифицировать как « расширения ASCII », хотя некоторые неправильно используют этот термин для представления всех вариантов, включая те, которые не сохраняют карту символов ASCII в 7-битном диапазоне. Кроме того, расширения ASCII также были ошибочно обозначены как ASCII. 7-битные кодыС самого начала своего развития ASCII задумывался как один из нескольких национальных вариантов международного стандарта символьных кодов. Другие международные органы по стандартизации ратифицировали кодировки символов, такие как ISO 646 (1967), которые идентичны или почти идентичны ASCII, с расширениями для символов вне английского алфавита и символов, используемых за пределами Соединенных Штатов, таких как символ фунта стерлингов Соединенного Королевства. (£). Почти каждой стране нужна была адаптированная версия ASCII, поскольку ASCII удовлетворяла потребности только США и некоторых других стран. Например, в Канаде была собственная версия, поддерживающая французские символы. Он будет разделять большинство общих символов, но назначать другие локально полезные символы нескольким кодовым точкам, зарезервированным для «национального использования». Однако четыре года, прошедшие между публикацией ASCII-1963 и первым принятием ISO международной рекомендации в 1967 году, привели к тому, что выбор ASCII для национальных символов использования стал казаться фактическими стандартами для всего мира, вызывая путаницу и несовместимость с другими странами. начали делать свои собственные присвоения этим кодовым точкам. ISO / IEC 646, как и ASCII, представляет собой 7-битный набор символов. Он не предоставляет никаких дополнительных кодов, поэтому одни и те же кодовые точки кодируют разные символы в разных странах. Коды выхода были определены, чтобы указать, какой национальный вариант применяется к фрагменту текста, но они редко использовались, поэтому часто было невозможно узнать, с каким вариантом работать и, следовательно, какой символ представляет код, и в целом текст. В любом случае процессинговые системы могли справиться только с одним вариантом. Поскольку скобки и фигурные скобки в ASCII были присвоены кодовым точкам «национального использования», которые использовались для букв с диакритическими знаками в других национальных вариантах ISO / IEC 646, немецкий, французский или шведский и т. Д. Программист использовал свой национальный вариант ISO. / IEC 646, а не ASCII, должен был записать и, следовательно, прочитать что-то вроде В Японии и Корее, начиная с 2020-х годов, используется вариант ASCII, в котором обратная косая черта (5C в шестнадцатеричном формате ) отображается как ¥ ( знак йены в Японии) или ₩ ( знак вон в Корее). Это означает, что, например, путь к файлу C: \ Users \ Smith отображается как C: ¥ Users ¥ Smith (в Японии) или C: Users ₩ Smith (в Корее). 8-битные кодыКодировки включают ISCII (Индия), VISCII (Вьетнам). Хотя эти кодировки иногда называют ASCII, истинный ASCII определяется строго только стандартом ANSI. Большинство ранних домашних компьютерных систем разработали свои собственные 8-битные наборы символов, содержащие рисование линий и игровые глифы, и часто заполняли некоторые или все управляющие символы от 0 до 31 дополнительной графикой. В компьютерах Kaypro CP / M использовались «верхние» 128 символов греческого алфавита. Стандарт ISO / IEC 8859 (производный от DEC-MCS), наконец, предоставил стандарт, который копирует большинство систем (по крайней мере, так же точно, как они копировали ASCII, но со многими заменами). Еще одно популярное расширение, разработанное Microsoft, Windows-1252 (часто ошибочно обозначается как ISO-8859-1 ), добавило типографские знаки препинания, необходимые для традиционной печати текста. ISO-8859-1, Windows-1252 и исходный 7-битный ASCII были наиболее распространенными кодировками символов до 2008 года, когда UTF-8 стал более распространенным. Юникод
|