ASCII-код¶
ASCII-код (American Standard Code for Information Interchange, американский стандартный код для обмена информацией) — это таблица кодировки символов, в которой каждому печатному или управляющему символу ставится в соответствие целое число от 0 до 127. ASCII является основополагающим стандартом для представления текстовой информации в цифровых устройствах и лег в основу большинства современных кодировок, включая Unicode.
¶История
Разработка ASCII началась в 1960 году в Американской ассоциации стандартов (ASA, ныне ANSI). Основной задачей было создание универсального стандарта для обмена данными между различными моделями компьютеров и телетайпов, которые до этого использовали несовместимые кодировки (например, BCDIC, Fieldata, коды компаний IBM и Remington Rand). Первая версия стандарта была опубликована в 1963 году, а окончательная редакция, включающая строчные буквы, — в 1967 году. В 1968 году президент США Линдон Джонсон подписал указ, предписывающий всем федеральным агентствам использовать ASCII, что обеспечило стандарту массовое распространение.
Ключевым вкладом в разработку ASCII считается работа комитета ASA X3.2, в который входили представители AT&T, IBM, Teletype Corporation и других компаний. Важную роль сыграл инженер Боб Бемер (IBM), предложивший концепцию 7-битного кода, и Роберт Уильямс (Bell Labs), разработавший управляющие символы.
¶Структура и кодировка
ASCII использует 7 бит для представления символа, что позволяет закодировать 128 (2^7) различных значений — от 0 до 127. Восьмой бит в байте (старший бит) первоначально использовался для контроля четности, а позже стал применяться для расширения кодировки (например, в ASCII-расширениях для национальных алфавитов).
¶Диапазоны кодов
Вся таблица ASCII делится на две основные части:
- Управляющие символы (коды 0–31 и 127): 33 символа, не имеющие графического отображения. Они предназначены для управления устройствами (телетайпами, терминалами, принтерами) и протоколами передачи данных. Примеры:
- 0 (NUL) — нулевой символ, используется как заполнитель.
- 7 (BEL) — звуковой сигнал (звонок).
- 10 (LF) — перевод строки (line feed).
- 13 (CR) — возврат каретки (carriage return).
- 27 (ESC) — escape-последовательность.
- 127 (DEL) — удаление (delete).
- Печатные символы (коды 32–126): 95 символов, включая:
- 32 — пробел (SP).
- 33–47 — знаки пунктуации и специальные символы (! " # $ % & ' ( ) * + , - . /).
- 48–57 — цифры от 0 до 9.
- 58–64 — знаки пунктуации и символы (: ; < = > ? @).
- 65–90 — заглавные латинские буквы (A–Z).
- 91–96 — скобки и символы ([ \ ] ^ _ `).
- 97–122 — строчные латинские буквы (a–z).
- 123–126 — фигурные скобки и символы ({ | } ~).
¶Принцип кодирования
Каждому символу соответствует уникальный 7-битный код. Например:
- Буква 'A' имеет код 65 (в двоичной системе — 1000001).
- Буква 'a' имеет код 97 (1100001).
- Цифра '0' имеет код 48 (0110000).
Разница между кодами заглавных и строчных букв составляет 32, что упрощает преобразование регистра — достаточно изменить один бит (шестой бит).
¶Применение
ASCII стал основой для взаимодействия человека с компьютером и для обмена данными между устройствами. Основные области применения:
¶Текстовые файлы и программирование
- Формат plain text (простой текст) использует ASCII для хранения исходного кода программ, конфигурационных файлов, документации. В современных системах ASCII-текст совместим с UTF-8, так как коды 0–127 в UTF-8 кодируются одним байтом.
- Управляющие символы (LF, CR, TAB) используются в языках программирования для форматирования вывода и управления строками.
¶Сетевые протоколы
- Протоколы HTTP, SMTP, FTP, Telnet и многие другие используют ASCII для передачи команд и заголовков. Например, HTTP-запрос начинается с метода (GET, POST) и пути, закодированных в ASCII.
- Протокол передачи данных RS-232 и последовательные интерфейсы исторически опирались на ASCII.
¶Терминалы и эмуляторы
- Терминалы VT100 и их эмуляторы (xterm, PuTTY, Windows Terminal) интерпретируют ASCII-коды для отображения текста и управления курсором (escape-последовательности, начинающиеся с ESC).
¶Клавиатура
- Скан-коды клавиш на клавиатуре преобразуются в ASCII-коды операционной системой. Например, нажатие клавиши 'A' генерирует код 65 (или 97 с Shift).
¶Известные примеры
- ASCII-арт — создание изображений из печатных символов ASCII (например, смайлик
:-)или рисунок кота). - Файлы .txt — стандартный формат хранения текста без форматирования.
¶Ограничения и расширения
ASCII имеет существенное ограничение: он поддерживает только латинский алфавит и не включает буквы кириллицы, немецкого, французского, греческого и других языков. Для решения этой проблемы были разработаны расширения ASCII, использующие восьмой бит для кодирования дополнительных 128 символов (коды 128–255). Примеры таких расширений:
- CP-437 (OEM-кодировка) — использовалась в IBM PC для DOS, включала символы псевдографики.
- Windows-1251 — кодировка для кириллицы в Windows.
- ISO 8859-1 (Latin-1) — для западноевропейских языков.
Однако эти расширения несовместимы друг с другом, что приводило к проблемам при обмене данными. В 1990-х годах был разработан стандарт Unicode (UTF-8, UTF-16), который полностью включает ASCII (первые 128 кодов совпадают) и позволяет кодировать символы всех языков мира.
¶Интересные факты
- ASCII-код 32 (пробел) — единственный символ, который не является ни управляющим, ни печатным в строгом смысле, но обычно относится к печатным.
- Управляющий символ 7 (BEL) исторически использовался для привлечения внимания оператора — в телетайпах он вызывал звонок, а в современных терминалах — звуковой сигнал системы.
- В RFC 20 (1969 год) ASCII был официально закреплён как стандарт для интернета.
- В некоторых старых системах (например, CP/M) использовался 7-битный ASCII, а восьмой бит игнорировался.
¶Критика и альтернативы
ASCII критикуется за недостаточность для представления нелатинских алфавитов, что привело к созданию множества несовместимых расширений. В настоящее время ASCII практически полностью вытеснен Unicode в веб-разработке, программировании и текстовых документах. Однако ASCII остаётся важным историческим стандартом и используется в низкоуровневых протоколах, встроенных системах и при работе с устаревшим оборудованием.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


