Открыть сервис

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 делится на две основные части:

  1. Управляющие символы (коды 0–31 и 127): 33 символа, не имеющие графического отображения. Они предназначены для управления устройствами (телетайпами, терминалами, принтерами) и протоколами передачи данных. Примеры:
  1. Печатные символы (коды 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.

Терминалы и эмуляторы

Клавиатура

  • Скан-коды клавиш на клавиатуре преобразуются в 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 →