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 делится на три основные группы:
- Управляющие символы (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).
- Печатаемые символы (32–126) — видимые символы, включая:
- Пробел (32).
- Цифры
0–9(48–57). - Заглавные буквы
A–Z(65–90). - Строчные буквы
a–z(97–122). - Знаки препинания и специальные символы:
!,",#,$,%,&,',(,),*,+,,,-,.,/,:,;,<,=,>,?,@,[,\,],^,_, ``,{,|,},~`.
- Символ 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 →