Расширенный ASCII
Расширенный ASCII (англ. Extended ASCII) — это общее название для различных 8-битных кодировок символов, которые являются надстройкой над стандартной 7-битной кодировкой ASCII (American Standard Code for Information Interchange). В отличие от базового ASCII, который определяет 128 символов (коды от 0 до 127), расширенный ASCII использует все 256 возможных значений одного байта (коды от 0 до 255), добавляя к стандартному набору ещё 128 символов (коды от 128 до 255). Не существует единого стандарта расширенного ASCII; под этим термином понимается множество несовместимых друг с другом кодировок, разработанных разными производителями и для разных языков.
История
Предпосылки появления
Базовый 7-битный ASCII, разработанный в 1963 году и стандартизированный как ANSI X3.4 в 1968 году, был достаточен для представления английского алфавита, цифр, знаков препинания и управляющих символов. Однако с распространением компьютеров в других странах возникла необходимость в отображении национальных алфавитов (например, латиницы с диакритическими знаками для французского, немецкого, испанского языков, кириллицы, греческого и других). Поскольку 7 бит было недостаточно для размещения всех нужных символов, производители начали использовать восьмой бит, расширяя набор до 256 знаков.
Развитие в 1970–1980-х годах
Первые 8-битные кодировки появились в конце 1970-х годов. Компания IBM сыграла ключевую роль, разработав кодовые страницы (code pages) для своих мэйнфреймов и персональных компьютеров. Наиболее известной стала IBM CP437 (OEM-кодировка), использовавшаяся в IBM PC и MS-DOS. Она включала символы псевдографики для построения интерфейсов в текстовом режиме, математические символы и буквы некоторых европейских языков. Параллельно развивались кодировки для конкретных языков: например, KOI-8 для кириллицы (разработана в СССР) и различные варианты Latin для западноевропейских языков.
Стандартизация и эпоха Windows
В 1980-х годах Американский национальный институт стандартов (ANSI) предпринял попытку стандартизировать расширенные кодировки, что привело к появлению семейства Windows-125x. Наиболее распространённые из них:
- Windows-1251 — для кириллицы (используется в русскоязычных версиях Windows).
- Windows-1252 — для западноевропейских языков (отличается от ISO 8859-1 добавлением некоторых знаков препинания).
Эти кодировки стали стандартом де-факто для операционных систем Microsoft Windows в 1990-х годах.
Упадок и переход к Unicode
С ростом глобализации и интернета несовместимость расширенных ASCII-кодировок стала серьёзной проблемой. Документ, созданный в одной кодировке, отображался «кракозябрами» в другой. Решением стало внедрение Unicode — универсальной кодировки, способной представить символы всех письменностей мира. В 1990-х годах Unicode начал вытеснять расширенный ASCII, особенно с появлением UTF-8, который сохранил обратную совместимость с 7-битным ASCII, но требовал более одного байта для других символов. К началу 2010-х годов Unicode стал доминирующей кодировкой в вебе и программном обеспечении, хотя расширенные ASCII-кодировки всё ещё используются в некоторых устаревших системах и специализированных приложениях.
Классификация расширенных ASCII-кодировок
Расширенные ASCII-кодировки можно разделить на несколько основных групп по назначению:
Национальные кодировки
Предназначены для отображения алфавитов конкретных языков или групп языков. Примеры:
- Кириллические: KOI8-R (для русского языка), Windows-1251, ISO 8859-5.
- Западноевропейские: Windows-1252, ISO 8859-1 (Latin-1), ISO 8859-15 (Latin-9).
- Центральноевропейские: Windows-1250, ISO 8859-2 (Latin-2).
- Греческие: Windows-1253, ISO 8859-7.
- Турецкие: Windows-1254, ISO 8859-9.
- Балтийские: Windows-1257, ISO 8859-4.
OEM-кодировки
Использовались в операционных системах DOS и ранних версиях Windows для текстового режима и файловых систем. Характеризуются наличием символов псевдографики. Примеры:
- CP437 (США/Западная Европа).
- CP850 (многоязычная латиница).
- CP866 (кириллица для DOS).
Кодировки для вычислительной техники
Специализированные кодировки для конкретных платформ или задач. Например:
- MacRoman — кодировка для классической Mac OS (до Mac OS X).
- IBM CP037 — кодировка для мэйнфреймов IBM (EBCDIC-совместимая).
Устройство и принцип кодирования
Структура байта
В расширенном ASCII каждый символ кодируется одним байтом (8 бит). Диапазон значений от 0 до 255. Первая половина (0–127) полностью соответствует стандартному 7-битному ASCII, что обеспечивает совместимость с английским текстом. Вторая половина (128–255) заполняется дополнительными символами в зависимости от конкретной кодовой страницы.
Таблица символов
Кодовая страница (code page) — это таблица, определяющая, какой символ соответствует каждому байтовому значению от 128 до 255. Например, в Windows-1251 код 192 соответствует букве «А», а в Windows-1252 — букве «À». Таким образом, один и тот же байт может обозначать совершенно разные символы в разных кодировках.
Управляющие символы
Коды от 0 до 31 и 127 (в некоторых кодировках также до 31 и 127) зарезервированы под управляющие символы (например, перевод строки, возврат каретки, табуляция). В расширенных кодировках они обычно не переопределяются.
Применение и значение
Историческое значение
Расширенный ASCII сыграл ключевую роль в компьютеризации неанглоязычных стран. Он позволил создавать текстовые документы, программы и интерфейсы на национальных языках на персональных компьютерах 1980–1990-х годов. Без него было бы невозможно массовое использование компьютеров в России, Европе и Азии.
Современное использование
Хотя Unicode стал стандартом, расширенные ASCII-кодировки всё ещё применяются в некоторых областях:
- Устаревшие системы: Многие банковские, промышленные и государственные системы, созданные в 1990-х, до сих пор работают с кодировками Windows-1251 или KOI8-R.
- Текстовые файлы: Старые текстовые файлы, созданные в DOS или ранних версиях Windows, могут быть закодированы в CP866 или Windows-1251.
- Электронная почта: Некоторые почтовые клиенты и протоколы (например, старые версии SMTP) поддерживают только 7-битные кодировки, и для передачи 8-битных символов используются методы кодирования (Base64, Quoted-Printable).
- Встраиваемые системы: В микроконтроллерах и устройствах с ограниченной памятью иногда применяются 8-битные кодировки для экономии ресурсов.
Проблемы совместимости
Основная проблема расширенного ASCII — отсутствие единого стандарта. При передаче текста между системами с разными кодовыми страницами происходит искажение символов. Для решения этой проблемы в интернете и современных ОС используется Unicode (UTF-8), который позволяет однозначно идентифицировать символы независимо от платформы.
Примеры кодовых страниц
Windows-1251 (кириллица)
Одна из самых распространённых кодировок для русского языка в Windows. Включает все буквы русского алфавита (заглавные и строчные), а также буквы украинского и белорусского языков (ґ, є, і, ї, ў). Коды от 192 до 255 заняты кириллическими символами.
KOI8-R (кириллица)
Разработана в СССР. Отличается от Windows-1251 тем, что кириллические буквы расположены в порядке, соответствующем английскому алфавиту (например, «А» имеет код 224, что соответствует «а» в ASCII). Это сделано для упрощения транслитерации. KOI8-R широко использовалась в Unix-системах и в сети Relcom.
CP437 (OEM-кодировка)
Использовалась в MS-DOS. Включает символы псевдографики (линии, рамки, блоки), математические символы (√, ∞, ±) и некоторые буквы европейских языков. Не содержит кириллицы.
ISO 8859-1 (Latin-1)
Стандартная кодировка для западноевропейских языков. Включает буквы с диакритическими знаками (например, é, ü, ñ). Является основой для Windows-1252, но отличается от неё в диапазоне 128–159.
Критика и недостатки
- Несовместимость: Разные кодовые страницы несовместимы друг с другом, что приводит к проблемам с обменом данными.
- Ограниченность: Один байт позволяет закодировать только 256 символов, что недостаточно для многих языков (например, китайского, японского, арабского).
- Отсутствие единого стандарта: Термин «расширенный ASCII» не является формальным стандартом, а лишь собирательным названием для множества кодировок.
- Проблемы с управляющими символами: В некоторых кодировках (например, Windows-1252) диапазон 128–159 используется для дополнительных символов, что может нарушать работу старых протоколов, ожидающих управляющих символов.
Интересные факты
- Термин «расширенный ASCII» часто используется неверно для обозначения любой 8-битной кодировки, хотя технически ASCII — это только 7-битный стандарт.
- В СССР была разработана альтернативная кодировка КОИ-7 (7-битная), которая использовалась для передачи кириллицы по телеграфным линиям. Позже на её основе была создана 8-битная KOI8.
- Кодировка CP866 (кириллица для DOS) до сих пор используется в некоторых эмуляторах терминала и в старых играх.
- Символы псевдографики из CP437 (например, ╔, ╗, ╚, ╝) активно применялись в интерфейсах MS-DOS и ранних BBS (электронных досок объявлений).
Источники
- Стандарт ANSI X3.4-1986 (ASCII).
- Спецификации кодовых страниц IBM (CP437, CP850, CP866).
- Спецификации кодовых страниц Microsoft Windows (Windows-1251, Windows-1252).
- Стандарты ISO/IEC 8859 (части 1–16).
- История развития кодировок: «The Unicode Standard, Version 15.0» (Unicode Consortium, 2022).
- Материалы по кодировкам кириллицы: «KOI8-R: Кодировка для русского языка» (RFC 1489, 1993).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →