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

ASCII

ASCII (American Standard Code for Information Interchange, американский стандартный код для обмена информацией) — это таблица кодировки символов, представляющая собой стандарт для представления текстовой информации в цифровых устройствах. ASCII является семибитной кодировкой, что позволяет закодировать 128 различных символов (2⁷ = 128), включая буквы латинского алфавита, цифры, знаки препинания, управляющие символы и пробел. Стандарт был разработан в 1963 году Американской ассоциацией стандартов (ASA, ныне ANSI) и впоследствии принят Международной организацией по стандартизации (ISO) как ISO/IEC 646. ASCII стал основой для большинства современных компьютерных кодировок, включая Unicode.

История

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

До появления ASCII в компьютерной технике использовались различные проприетарные кодировки, такие как EBCDIC (Extended Binary Coded Decimal Interchange Code) от IBM, а также телеграфные коды (например, код Бодо). Отсутствие единого стандарта приводило к проблемам совместимости при передаче данных между разными системами. В 1960 году ASA начала работу над универсальным кодом для обмена информацией, который мог бы использоваться в телетайпах, компьютерах и других устройствах.

Разработка и стандартизация

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

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

С развитием персональных компьютеров в 1970–1980-х годах ASCII стал де-факто стандартом для текстовых файлов, протоколов передачи данных (например, Telnet, SMTP) и интерфейсов командной строки. Операционные системы Unix и MS-DOS использовали ASCII как базовую кодировку. С появлением 8-битных компьютеров ASCII был расширен до 256 символов (расширенный ASCII), где вторая половина таблицы (128–255) отводилась под национальные символы (например, кириллицу в кодировке CP866 или Windows-1251) и псевдографику.

Структура таблицы ASCII

Диапазоны символов

Таблица ASCII делится на три основные группы:

  1. Управляющие символы (0–31 и 127) — непечатаемые символы, предназначенные для управления устройствами (телетайпами, терминалами) и протоколами передачи данных. Примеры:
  • NUL (0) — нулевой символ, используется как заполнитель.
  • SOH (1) — начало заголовка (Start of Heading).
  • STX (2) — начало текста (Start of Text).
  • ETX (3) — конец текста (End of Text).
  • EOT (4) — конец передачи (End of Transmission).
  • BEL (7) — звуковой сигнал (Bell).
  • BS (8) — возврат на шаг (Backspace).
  • HT (9) — горизонтальная табуляция (Horizontal Tab).
  • LF (10) — перевод строки (Line Feed).
  • CR (13) — возврат каретки (Carriage Return).
  • ESC (27) — escape-символ, используется для ввода управляющих последовательностей.
  • DEL (127) — удаление (Delete).
  1. Печатаемые символы (32–126) — видимые символы, включая:
  • Пробел (32).
  • Цифры 0–9 (48–57).
  • Заглавные буквы A–Z (65–90).
  • Строчные буквы a–z (97–122).
  • Знаки препинания и специальные символы: !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, ` `, {, |, }, ~`.
  1. Символ 127 (DEL) — исторически использовался для удаления символа на перфоленте (пробивание всех дырок).

Семибитная природа

ASCII использует 7 бит для кодирования каждого символа, что даёт 128 возможных значений. Восьмой бит (старший) в исходном стандарте не использовался и мог быть нулевым или использоваться для контроля чётности. В расширенных версиях восьмой бит добавлял ещё 128 символов, что позволяло кодировать национальные алфавиты (кириллицу, греческий, арабский) и символы псевдографики.

Применение

Текстовые файлы и протоколы

ASCII является основой для хранения простого текста (plain text) в большинстве операционных систем. Файлы с расширением .txt часто используют ASCII (или его расширения). Протоколы электронной почты (SMTP), передачи файлов (FTP) и веб-серверов (HTTP) изначально были разработаны для работы с ASCII-текстом.

Программирование

Исходный код большинства языков программирования (C, C++, Java, Python, JavaScript) пишется в ASCII-совместимых кодировках. Ключевые слова, операторы и идентификаторы состоят из символов ASCII. Управляющие символы ASCII (например, LF для перевода строки, HT для табуляции) используются для форматирования кода.

Интерфейсы командной строки

Терминалы и эмуляторы терминалов (например, xterm, Windows Terminal) работают с ASCII-символами для отображения текста и управления курсором. Управляющие последовательности (escape-последовательности), начинающиеся с символа ESC, используются для изменения цвета, перемещения курсора и других операций.

Сетевое взаимодействие

Многие сетевые протоколы (Telnet, SSH, HTTP/1.x) передают команды и данные в виде ASCII-строк. Например, HTTP-запросы содержат ASCII-методы (GET, POST) и заголовки.

Расширения ASCII

8-битные кодировки

Для поддержки национальных алфавитов были созданы 8-битные расширения ASCII, где символы с кодами 128–255 отводились под дополнительные знаки. Примеры:

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

Unicode

Unicode (стандарт ISO/IEC 10646) является универсальной кодировкой, охватывающей все письменности мира. Первые 128 символов Unicode (U+0000–U+007F) полностью совпадают с ASCII. Это обеспечивает обратную совместимость: любой ASCII-текст является корректным Unicode-текстом в кодировках UTF-8, UTF-16 и UTF-32. UTF-8, наиболее распространённая кодировка в интернете, использует один байт для символов ASCII и два–четыре байта для остальных.

Ограничения

  • Отсутствие поддержки нелатинских алфавитов — ASCII не содержит букв кириллицы, греческого, арабского, иероглифов и других письменностей.
  • Отсутствие символов с диакритическими знаками — буквы с ударениями, умляутами и другими надстрочными знаками (например, «ё», «ü», «é») отсутствуют.
  • Ограниченный набор управляющих символов — современные протоколы и устройства требуют более сложных управляющих последовательностей, которые не входят в ASCII.
  • Устаревание для современных задач — для интернационализации и работы с многоязычным текстом ASCII заменён Unicode.

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

  • Символ LF (перевод строки) используется в Unix-подобных системах как конец строки, в то время как в Windows используется комбинация CR + LF.
  • Символ BEL (7) исторически вызывал звуковой сигнал на телетайпах; в современных терминалах он может воспроизводить системный звук.
  • Escape-последовательности ASCII (начинающиеся с ESC) используются в терминалах для управления цветом, форматированием и положением курсора (ANSI escape codes).
  • ASCII-арт — это графическое искусство, использующее печатаемые символы ASCII для создания изображений. Он был популярен в BBS (Bulletin Board System) и ранних компьютерных играх.
  • В СССР и России существовала альтернативная 7-битная кодировка КОИ-7, которая отличалась расположением некоторых символов (например, вместо символа [ использовалась буква «Ш»).

Источники

  • ANSI X3.4-1968. American National Standard Code for Information Interchange. American National Standards Institute, 1968.
  • ISO/IEC 646:1991. Information technology — ISO 7-bit coded character set for information interchange. International Organization for Standardization, 1991.
  • КОИ-7. ГОСТ 13052-67. Код обмена информацией для телеграфной и факсимильной связи. Государственный комитет стандартов СССР, 1967.
  • Unicode Consortium. The Unicode Standard, Version 15.0. Mountain View, CA, 2022.

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

На главную BFOmetr →