ASCII — американский стандартный код обмена информацией¶
ASCII (англ. American Standard Code for Information Interchange, произносится «аски́») — семибитный набор символов, разработанный в 1960-х годах в США и ставший фундаментом кодировки текстовых данных в информатике. Каждому символу в нём соответствует семизначный числовой код (от 0 до 127), что позволяет представлять текст в виде последовательности целых чисел. На протяжении десятилетий ASCII был основным стандартом текстового кодирования в компьютерах и телекоммуникациях, а его структура легла в основу более поздних кодировок, включая Unicode.
¶История создания
Разработка ASCII началась в 1960 году при участии комитета American Standards Association (ASA, ныне ANSI). Руководителем проекта стал Боб Бемер из IBM, в разработке также участвовали Гленн Спенс (Bell Labs) и Джоэл Спитцер. Основная задача заключалась в создании единого стандарта кодирования символов, пригодного для обмена информацией между компьютерами разных производителей — до этого каждая фирма использовала собственные, несовместимые кодовые таблицы.
В 1963 году был опубликован первый вариант стандарта ASA X3.4-1963. В нём, в частности, отсутствовали строчные латинские буквы — они были добавлены в редакции 1967 года. Окончательная, наиболее распространённая версия стандарта утверждена в 1967 году и подтверждена в 1986-м (ANSI X3.4-1986). ASCII разрабатывался на основе телетайпного кода Мюррея, применяемого в телетайпах и пишущих машинах.
¶Структура кодовой таблицы
Кодовая таблица ASCII содержит 128 символов с кодами от 0 до 127. Каждый код занимает 7 бит, однако в большинстве компьютерных систем он хранится в одном байте (8 бит), старший бит при этом обнуляется. Структура таблицы:
| Диапазон кодов | Содержание |
|---|---|
| 0–31 | Управляющие символы (коды управления, перевод строки, возврат каретки, звонок, Backspace и др.) |
| 32 | Пробел |
| 33–47 | Пунктуация и знаки препинания (!, ", #, $, %, &, ', (, ), *, +, comma, -, ., /) |
| 48–57 | Цифры 0–9 |
| 58–64 | Двоеточие, точка с запятой, знаки меньше/больше, равенство, вопросительный знак, «at» (@) |
| 65–90 | Заглавные латинские буквы A–Z |
| 91–96 | Квадратные скобки, обратный слэш, циркумфлекс, подчёркивание, обратный апостроф |
| 97–122 | Строчные латинские буквы a–z |
| 123–126 | Фигурные скобки, вертикальная черта, тильда |
| 127 | Управляющий символ DEL (удаление) |
Строчные и заглавные латинские буквы различаются ровно на 32 (например, код 'A' — 65, код 'a' — 97), что упрощало преобразование регистра в программном обеспечении.
¶Расширения и 8-битные кодировки
Поскольку 128 символов ASCII не покрывали потребности национальных языков, в 1980-х годах появились 8-битные расширения, добавлявшие к стандартному набору ещё 128 символов (коды 128–255). Наиболее известные из них:
- ISO 8859-1 (Latin-1) — западноевропейские языки;
- Windows-1251 — кириллица, использовавшаяся в Windows для русского языка;
- KOI-8-R — кириллица, распространённая в Unix-системах и на первых русских сайтах;
- CP866 — кириллица в DOS.
Все эти кодировки сохраняли полную совместимость с ASCII в диапазоне 0–127, что обеспечивало обратную совместимость с программами и протоколами, рассчитанными на 7-битный набор.
¶Роль в стандартах и протоколах
ASCII стал основой для многих фундаментальных стандартов информатики и телекоммуникаций. На нём построены:
- EBCDIC — альтернативная кодовая таблица IBM, частично с ним совместимая;
- Unicode — универсальный стандарт кодирования, в котором первые 128 кодовых позиций полностью совпадают с ASCII;
- URL-кодирование — процентное кодирование в веб-адресах использует ASCII-символы;
- MIME — стандарт передачи вложений в электронной почте;
- SMTP, HTTP, FTP — базовые интернет-протоколы изначально предполагали 7-битный ASCII-текст.
Совместимость с ASCII заложена в UTF-8 — наиболее распространённую в XXI веке кодировку, в которой 128 символов ASCII кодируются теми же однобайтовыми значениями.
¶Ограничения
Главное ограничение ASCII — отсутствие в нём символов кириллицы, греческого алфавита, иероглифов, математических знаков и других национальных и специальных знаков. Для русского языка это означало необходимость использовать расширения (Windows-1251, KOI-8-R, MacCyrillic) или более поздние стандарты (UTF-8). Кроме того, 7-битный формат ограничивал набор управляющих символов, что вынуждало разрабатывать расширенные варианты (например, ASCII-код 27 — ESC — служит началом управляющих последовательностей ANSI.
¶Применение в настоящее время
Несмотря на вытеснение Unicode, ASCII остаётся актуальным в ряде областей: программирование (имена переменных, операторы, синтаксис языков), сетевые протоколы, конфигурационные файлы, ASCII-арт — графика, создаваемая текстовыми символами. Числовые коды ASCII часто используются при изучении основ программирования для работы со строками и символами.
¶Исторические факты
В 2003 году Боб Бемер продал оригинальный документ 1963 года с черновиком ASCII-таблицы на аукционе за 71 000 долларов. В 2019 году в США была отмечена 50-летняя годовщина ASCII (отсчёт ведётся от версии 1963 года).
¶Источники
- American National Standard Code for Information Interchange (ANSI X3.4-1986). — ANSI, 1986.
- Campbell-Kelly M., Aspray W. Computer: A History of the Information Machine. — Basic Books, 2004.
- Стандарт ISO/IEC 646:1991 (международный эквивалент ASCII).
- Бемер Р. The World of ASCII. — IBM, 2000.
