Таблица ASCII: как 128 чисел стали основой текста
ASCII, сокращение от American Standard Code for Information Interchange («американский стандартный код для обмена информацией»), — это кодировка, научившая компьютеры договариваться о том, что такое буква. Опубликованная в 1963 году и доработанная в 1960-х, она отображает каждый базовый символ английского текста, цифры и ряд управляющих сигналов на числа, которые машина может хранить и передавать. Когда вы нажимаете клавишу с заглавной A, компьютер сохраняет не форму символа, а число 65. ASCII — это таблица соответствий, благодаря которой это число означает A везде, куда бы оно ни попало.
Стандарт известен своей компактностью. ASCII — 7-битная кодировка: каждый символ помещается в семь двоичных разрядов, а всё множество охватывает ровно 2 в степени 7, то есть 128 различных кодовых позиций, пронумерованных от 0 до 127. Такая экономия была намеренной. Ранние телетайпы и модемы работали медленно и стоили дорого, каждый бит был на счету. Семи бит хватало для прописных и строчных латинских букв, десяти цифр, распространённой пунктуации и сигнальных символов синхронизации устройств, а один оставшийся бит многие системы использовали для контроля чётности.

Две половины: управляющие и печатные символы
Таблица чётко делится на два раздела. Коды от 0 до 31, а также код 127 (DEL) — управляющие символы. Они не выводят глиф на экран, а отдают устройству команды: код 9 — горизонтальная табуляция, код 10 — перевод строки, код 13 — возврат каретки, код 7 — звуковой сигнал, заставлявший терминал издавать звонок. Всего таких сигнальных кодов 33, и хотя многие из них сегодня исторические курьёзы, перевод строки, возврат каретки и табуляция по-прежнему определяют форматирование текстовых файлов.
Коды от 32 до 126 — печатные символы, всего их 95. Код 32 — пробел, который считается печатным, потому что он продвигает курсор, хотя ничего не показывает. Далее идут знаки препинания и специальные символы, цифры от 0 до 9 под кодами 48–57, прописные буквы A–Z под кодами 65–90 и строчные a–z под кодами 97–122. Из этой раскладки вытекает изящное свойство: строчная и прописная версии одной и той же буквы различаются ровно на 32, поэтому достаточно перевернуть один бит, чтобы изменить регистр. Эти закономерности не случайны — они были спроектированы, чтобы сортировка и смена регистра выполнялись простой арифметикой.
Десятичная, шестнадцатеричная и двоичная: три взгляда на одно число
Каждый ASCII-код — это просто число, которое записывается тремя способами. Десятичная — повседневная форма с основанием 10: A = 65. Шестнадцатеричная с основанием 16 — форма, к которой тянутся программисты, потому что она совпадает с байтами: A = 0x41, а печатный диапазон тянется от 0x20 до 0x7E. Двоичная с основанием 2 — форма, в которой хранит данные само железо: A = 1000001 в семи битах. Один символ, три записи, а умение свободно переключаться между ними — базовый навык при чтении дампов памяти или сетевого трафика. Если вы часто работаете с такими преобразованиями, полный набор справочных таблиц на speedor.net держит все соответствия в одном клике.

Где ASCII по-прежнему актуален
Было бы ошибкой считать ASCII историей. Он живёт в ежедневной работе каждого, кто касается кода. Языки программирования обрабатывают строковые литералы, исходные файлы и ключевые слова протоколов на уровне байтов ASCII. Сетевые протоколы — HTTP-заголовки, SMTP и множество конфигурационных форматов — определены в ASCII, чтобы оставаться читаемыми для человека. Когда строка выглядит повреждённой, разработчики открывают hex-просмотрщик и сверяют сырые байты с таблицей ASCII, чтобы обнаружить лишний управляющий символ или неправильное окончание строки. URL-кодирование, Base64 и escape-последовательности — всё это строится на значениях ASCII. Для тех, кто отлаживает ошибки кодировки, быстрый справочник рядом с вашими инструментами разработчика превращает таинственный байт в очевидный ответ.
От ASCII к Unicode и UTF-8
ASCII прекрасно справлялся с английским и почти ни с чем другим. 128 символов не вмещают буквы с диакритикой, кириллицу, китайские иероглифы, арабское письмо или эмодзи. Unicode решил эту задачу, присвоив уникальный номер — кодовую позицию — каждому символу каждой системы письма: теперь их свыше ста тысяч. Принципиально важно: Unicode — это каталог символов, а не формат хранения, поэтому для преобразования кодовых позиций в байты нужна кодировка.
UTF-8 — такая кодировка, и именно она объясняет, почему ASCII никуда не исчез. UTF-8 использует от одного до четырёх байт на символ и спроектирован так, чтобы кодовые позиции от 0 до 127, то есть весь диапазон ASCII, хранились в одном байте, идентичном чистому ASCII. Это делает UTF-8 полностью обратно совместимым: любой корректный ASCII-файл уже является корректным UTF-8-файлом. Символы выше 127 используют дополнительные байты. Эта изящная совместимость — одна из главных причин, по которым UTF-8 сейчас обслуживает подавляющее большинство веба. Коротко: ASCII — исходное ядро из 128 символов, Unicode — универсальный каталог, содержащий его, а UTF-8 — кодировка, которая переносит оба, сохраняя ASCII-текст побайтово нетронутым.
Часто задаваемые вопросы
Сколько символов в таблице ASCII?
Стандартный ASCII определяет 128 символов с номерами от 0 до 127. Из них 95 — печатные символы, включая пробел, и 33 — управляющие символы, подающие сигналы устройствам, а не выводящие глиф.
В чём разница между управляющими и печатными символами?
Управляющие символы, коды от 0 до 31 плюс 127, предписывают устройству выполнить действие — например, перевод строки или табуляцию — и не создают видимого глифа. Печатные символы, коды от 32 до 126, — это буквы, цифры, знаки препинания и пробел, которые вы реально видите на экране.
Почему ASCII — 7-битная кодировка?
Семь бит дают ровно 128 комбинаций, которых хватало для английских букв, цифр, пунктуации и управляющих сигналов при экономии полосы пропускания на медленном раннем железе. Восьмой бит байта нередко резервировался для контроля чётности.
Каков ASCII-код буквы A?
Прописная A — это десятичное 65, шестнадцатеричное 0x41 и двоичное 1000001. Строчная a — десятичное 97, то есть ровно на 32 больше: встроенная закономерность, позволяющая менять регистр простой арифметикой.
ASCII и Unicode — это одно и то же?
Нет. ASCII охватывает 128 символов, тогда как Unicode каталогизирует свыше ста тысяч символов из всех систем письма. ASCII фактически является первыми 128 кодовыми позициями Unicode, то есть небольшим подмножеством более широкого стандарта.
Как UTF-8 связан с ASCII?
UTF-8 — это кодировка для Unicode, хранящая кодовые позиции от 0 до 127 в одном байте, идентичном ASCII. Это делает любой ASCII-файл корректным UTF-8-файлом, что объясняет обратную совместимость UTF-8 и его господство в современном вебе.
