Код ASCII
ASCII (American Standard Code for Information Interchange, американский стандартный код для обмена информацией) — это таблица кодировки символов, в которой каждому печатному или управляющему символу ставится в соответствие целое число от 0 до 127. ASCII является одним из фундаментальных стандартов вычислительной техники, обеспечивающим совместимость между различными устройствами и программами при передаче текстовой информации.
История
Разработка ASCII началась в 1960-х годах в США, когда возникла необходимость в едином стандарте для обмена данными между разными производителями компьютеров и телекоммуникационного оборудования. До этого каждая компания использовала собственные кодировки (например, EBCDIC от IBM, FIELDATA от Министерства обороны США), что затрудняло взаимодействие систем.
В 1963 году Американская ассоциация стандартов (ASA, ныне ANSI) опубликовала первую версию ASCII. Она содержала 128 символов, включая 33 управляющих кода (для управления терминалами, принтерами, линиями связи) и 95 печатных знаков (буквы латинского алфавита, цифры, знаки препинания, математические символы). Стандарт был доработан в 1967 году (ASCII-67) и в 1986 году (ANSI X3.4-1986), который остаётся действующим.
В 1970-х годах ASCII стал стандартом де-факто в компьютерной индустрии, особенно после принятия его в качестве стандарта для протокола передачи данных в сети ARPANET (предшественнике Интернета). В 1980-х годах ASCII был закреплён в международных стандартах ISO/IEC 646 (как национальный вариант) и ITU-T T.50.
Структура таблицы ASCII
Таблица ASCII состоит из 128 кодов (0–127), которые делятся на две основные группы:
Управляющие символы (коды 0–31 и 127)
Эти символы не отображаются на экране, а предназначены для управления устройствами или форматирования текста. Наиболее известные из них:
- NUL (0) — нулевой символ, используется для заполнения или завершения строк.
- SOH (1) — начало заголовка.
- STX (2) — начало текста.
- ETX (3) — конец текста.
- EOT (4) — конец передачи.
- BEL (7) — звуковой сигнал (звонок).
- BS (8) — возврат на один символ (Backspace).
- HT (9) — горизонтальная табуляция.
- LF (10) — перевод строки (Line Feed).
- VT (11) — вертикальная табуляция.
- FF (12) — перевод страницы (Form Feed).
- CR (13) — возврат каретки (Carriage Return).
- SO (14) — переключение на альтернативный набор символов.
- SI (15) — переключение на стандартный набор символов.
- ESC (27) — Escape (выход из режима, управляющая последовательность).
- DEL (127) — удаление (Delete).
Печатные символы (коды 32–126)
Эта группа включает все видимые знаки, которые можно ввести с клавиатуры:
- Пробел (32) — невидимый символ, разделяющий слова.
- Цифры (48–57) — 0, 1, 2, ..., 9.
- Заглавные латинские буквы (65–90) — A, B, C, ..., Z.
- Строчные латинские буквы (97–122) — a, b, c, ..., z.
- Знаки препинания и символы — !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, ~.
Расширения ASCII
Поскольку ASCII содержит только 128 символов, он не поддерживает буквы национальных алфавитов (кириллицу, немецкие умляуты, французские акценты и т.д.) и многие специальные символы. Для решения этой проблемы были разработаны расширенные кодировки, использующие 8-битные (256 символов) таблицы. Наиболее известные из них:
- ISO 8859-1 (Latin-1) — для западноевропейских языков.
- Windows-1251 — для кириллицы (русский, украинский, белорусский и др.).
- KOI8-R — для русского языка, популярная в UNIX-системах.
- CP437 — оригинальная кодировка IBM PC, содержащая символы псевдографики.
В современных системах ASCII часто используется как подмножество более широких кодировок (например, UTF-8, где первые 128 кодов совпадают с ASCII).
Применение
ASCII является основой для множества технологий и протоколов:
- Текстовые файлы — простые текстовые файлы (.txt) обычно хранят данные в ASCII или его расширениях.
- Программирование — исходный код на языках C, C++, Java, Python и других использует ASCII для записи ключевых слов, идентификаторов и строк.
- Сетевые протоколы — HTTP, SMTP, FTP, Telnet и многие другие передают команды и данные в текстовом виде, основанном на ASCII.
- Клавиатуры — скан-коды клавиш преобразуются в ASCII-коды при вводе текста.
- Сериализация данных — форматы JSON, XML, YAML используют ASCII для представления структурированных данных.
- Управление устройствами — принтеры, плоттеры, терминалы и модемы используют управляющие символы ASCII для форматирования вывода и управления режимами.
Критика и ограничения
- Отсутствие поддержки национальных алфавитов — ASCII не позволяет записывать тексты на большинстве языков мира, включая русский, арабский, китайский.
- Ограниченный набор символов — 95 печатных знаков недостаточно для многих научных, математических и типографских задач (например, нет символов «кавычки-ёлочки», тире, знака градуса).
- Устаревшие управляющие символы — многие из них (например, NUL, SOH) практически не используются в современных системах, но сохраняются для обратной совместимости.
- Неоднозначность в расширениях — разные 8-битные кодировки могут интерпретировать коды 128–255 по-разному, что приводит к проблемам с отображением текста (кракозябры).
Интересные факты
- Код пробела (32) был выбран как наименьший печатный символ, чтобы упростить сортировку строк (пробел идёт раньше всех букв).
- Буквы A и a различаются ровно на 32 в двоичном представлении (01000001 и 01100001), что позволяет легко преобразовывать регистр, изменяя один бит.
- Символ @ (код 64) стал широко известен благодаря электронной почте, где используется как разделитель между именем пользователя и доменом.
- ASCII-арт — искусство создания изображений с помощью печатных символов ASCII, популярное в ранних компьютерных сетях и BBS.
Источники
- American National Standard for Information Systems — Coded Character Sets — 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII), ANSI X3.4-1986.
- ISO/IEC 646:1991 — Information technology — ISO 7-bit coded character set for information interchange.
- RFC 20 — ASCII format for network interchange (1969).
- Кнут Д. Э. Искусство программирования. Том 1. Основные алгоритмы. — М.: Вильямс, 2006.
- Таненбаум Э. Архитектура компьютера. — СПб.: Питер, 2013.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →