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

Кодировка ASCII

ASCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией) — это таблица кодировки символов, предназначенная для представления текстовой информации в цифровых устройствах. ASCII является семибитной кодировкой, то есть каждый символ в ней кодируется последовательностью из 7 бит, что позволяет закодировать 128 различных символов (от 0 до 127). Стандарт был разработан в 1963 году и стал основой для большинства современных компьютерных кодировок.

История

Предпосылки создания

До появления ASCII существовало множество несовместимых друг с другом кодировок, используемых в телеграфии и ранних вычислительных машинах. Разные производители (IBM, Univac, Burroughs) применяли собственные системы кодирования, что затрудняло обмен данными между устройствами. В 1960 году Американская ассоциация стандартов (ASA, ныне ANSI) приступила к разработке универсального стандарта.

Разработка и принятие

Работу возглавил Роберт Бернер, сотрудник компании IBM. Первая версия стандарта была опубликована в 1963 году под названием ASA X3.4-1963. В 1967 году вышла обновлённая версия (ASA X3.4-1967), в которую были внесены существенные изменения: строчные буквы были отделены от прописных, а управляющие символы были перераспределены. Окончательная версия, ставшая международным стандартом, была утверждена в 1968 году как ANSI X3.4-1968. Впоследствии ASCII был принят Международной организацией по стандартизации (ISO) как ISO 646 (с некоторыми национальными вариантами).

Распространение

В 1970-х — 1980-х годах ASCII стал де-факто стандартом для персональных компьютеров, телетайпов и терминалов. Операционные системы CP/M, MS-DOS, Unix и ранние версии Windows использовали ASCII (или его расширения) для представления текста. С появлением более мощных компьютеров и необходимости поддержки языков, отличных от английского, ASCII был расширен до 8-битных кодировок (например, Windows-1251, KOI-8), а затем вытеснен Unicode, который, однако, сохранил первые 128 кодов ASCII в качестве своей основы.

Структура и таблица символов

ASCII состоит из 128 кодов, которые делятся на две основные группы:

Управляющие символы (коды 0–31 и 127)

Эти символы не отображаются на экране и не печатаются, а предназначены для управления устройствами (терминалами, принтерами, линиями связи). К ним относятся:

  • NUL (0) — нулевой символ, используется как заполнитель или терминатор строки в некоторых языках программирования (например, в C).
  • BEL (7) — звонок (bell), вызывает звуковой сигнал на терминале.
  • BS (8) — возврат на шаг (backspace), перемещает курсор на одну позицию влево.
  • TAB (9) — горизонтальная табуляция.
  • LF (10) — перевод строки (line feed), сдвигает курсор на следующую строку.
  • CR (13) — возврат каретки (carriage return), перемещает курсор в начало строки.
  • ESC (27) — escape, используется для ввода управляющих последовательностей.
  • DEL (127)удаление (delete), в некоторых системах стирает символ слева от курсора.

Печатные символы (коды 32–126)

Это видимые символы: буквы, цифры, знаки препинания и специальные знаки.

Код (дес.)СимволОписание
32ПробелНепечатный символ, разделяющий слова
33–47! " # $ % & ' ( ) * + , - . /Знаки пунктуации и математические символы
48–570–9Арабские цифры
58–64: ; < = > ? @Знаки препинания и символ @ (коммерческое at)
65–90A–ZПрописные латинские буквы
91–96[ \ ] ^ _ `Скобки и специальные символы
97–122a–zСтрочные латинские буквы
123–126{ \} ~Фигурные скобки и тильда

Важной особенностью ASCII является то, что коды прописных и строчных букв различаются ровно на 32 (например, 'A' = 65, 'a' = 97). Это упрощает преобразование регистра: достаточно изменить шестой бит (добавить или вычесть 32).

Расширения ASCII

Поскольку 7-битный ASCII мог кодировать только 128 символов, что было недостаточно для языков, использующих кириллицу, диакритические знаки или иероглифы, были разработаны 8-битные расширения. Они использовали коды 128–255 для дополнительных символов. Наиболее известные расширения:

  • ISO 8859-1 (Latin-1) — для западноевропейских языков.
  • Windows-1251 — для кириллицы (русский, украинский, белорусский и др.).
  • KOI8-R — альтернативная кириллическая кодировка, популярная в Unix-системах и Рунете в 1990-х годах.
  • CP437 — оригинальная кодировка IBM PC, содержащая символы псевдографики.

Все эти кодировки сохраняли первые 128 символов (0–127) неизменными, что обеспечивало обратную совместимость с ASCII.

Применение

В компьютерных системах

ASCII широко использовался в:

  • Терминалах и телетайпах (например, Teletype Model 33) для передачи текста по последовательным линиям связи.
  • Файловых системах — текстовые файлы в кодировке ASCII (plain text) являются базовым форматом для хранения исходного кода, конфигураций и документации.
  • Сетевых протоколах — многие протоколы (HTTP, SMTP, FTP, Telnet) используют ASCII для передачи команд и заголовков. Например, HTTP-запросы и ответы — это текст в ASCII.
  • Языках программированияисходный код на языках C, C++, Java, Python и других традиционно записывается в ASCII (или его расширениях).

В электронной почте

Протокол SMTP изначально был рассчитан только на передачу 7-битного ASCII. Для отправки вложений (изображений, архивов) были разработаны методы кодирования двоичных данных в ASCII, такие как Base64 и quoted-printable.

В современных системах

Хотя Unicode (UTF-8) стал доминирующей кодировкой, ASCII остаётся важным:

  • UTF-8 полностью совместим с ASCII: первые 128 кодов UTF-8 совпадают с ASCII. Любой ASCII-текст является корректным UTF-8.
  • Управляющие символы ASCII используются в современных протоколах (например, символы LF и CR в HTTP-заголовках).
  • Встраиваемые системы и микроконтроллеры часто используют ASCII для вывода отладочной информации через последовательный порт.

Критика и ограничения

Основным недостатком ASCII является его ограниченность: он поддерживает только латинский алфавит и английский язык. Для других языков (русского, арабского, китайского) требуются расширения или полная замена кодировки. Кроме того, ASCII не поддерживает математические символы (например, греческие буквы, интегралы) и символы других письменностей.

Ещё одним ограничением является то, что ASCII не различает национальные валюты: символ доллара ($) есть, а знаков рубля, евро или фунта стерлингов в оригинальном стандарте не предусмотрено.

Интересные факты

  • Символ @ (коммерческое at) с кодом 64 был включён в ASCII не для электронной почты (она появилась позже), а как коммерческий символ «по цене за штуку» (от англ. at the rate of).
  • В ранних версиях ASCII строчные буквы отсутствовали — они были добавлены только в версии 1967 года.
  • Код 127 (DEL) изначально предназначался для перфолент: он позволял пробить все отверстия в позиции, «затирая» любой ранее записанный символ.
  • ASCII является основой для многих стандартов, включая Unicode, который расширяет его до 1 114 112 возможных кодовых позиций.

Источники

  • ANSI X3.4-1968: American Standard Code for Information Interchange
  • ISO 646: Information processing — ISO 7-bit coded character set for information interchange
  • Mackenzie, Charles E. (1980). Coded Character Sets: History and Development. Addison-Wesley.
  • RFC 20: ASCII format for network interchange (1969)
  • История развития кодировок текста — материалы Computer History Museum

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →