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

CP866

CP866 (также известная как OEM 866 или DOS-866) — это 8-битная однобайтовая кодировка символов, разработанная для использования в операционной системе MS-DOS и других системах, совместимых с IBM PC. Она является одной из стандартных кодовых страниц (code page) для кириллицы, обеспечивающая представление букв русского алфавита, а также символов псевдографики, необходимых для интерфейсов командной строки.

История

Кодировка CP866 была создана корпорацией IBM в начале 1990-х годов как часть семейства OEM-кодовых страниц, предназначенных для аппаратного и программного обеспечения, не поддерживающего Unicode. В отличие от более поздних стандартов, таких как Windows-1251 (используемая в графических интерфейсах Windows), CP866 была оптимизирована для работы в текстовом режиме, где требовалось отображение не только букв, но и элементов псевдографики (линий, рамок, блоков), широко применявшихся в программах для DOS.

С распространением Microsoft Windows и переходом на Unicode кодировка CP866 постепенно утратила массовое применение, однако остаётся востребованной в ряде нишевых областей, таких как эмуляция DOS, работа с устаревшим программным обеспечением, встроенные системы и некоторые телекоммуникационные протоколы.

Структура и кодировка

CP866 представляет собой 8-битную кодовую страницу, где каждый символ кодируется одним байтом (0–255). Первые 128 кодов (0–127) полностью соответствуют стандарту ASCII (American Standard Code for Information Interchange), включая латинские буквы, цифры, знаки препинания и управляющие символы.

Диапазон 128–255 (0x80–0xFF) отведён под национальные символы кириллицы и элементы псевдографики. В CP866 используются следующие основные группы символов:

  • Кириллические буквы (строчные и заглавные): 33 буквы русского алфавита (включая букву «Ё» и «ё»), расположенные в порядке, отличном от Windows-1251 и KOI8-R.
  • Символы псевдографики: около 30 символов, предназначенных для рисования рамок, линий, углов и других элементов интерфейса в текстовом режиме. Эти символы были необходимы для создания меню, окон и таблиц в программах для DOS.
  • Дополнительные символы: знаки валют, математические символы, буквы других алфавитов (например, греческие), а также некоторые специальные символы.

Таблица кодировки (диапазон 0x80–0xFF)

Ниже приведена часть таблицы символов CP866 в шестнадцатеричном представлении. Полная таблица доступна в документации IBM и других источниках.

Код (hex)СимволОписание
0x80АЗаглавная кириллическая А
0x81БЗаглавная кириллическая Б
.........
0x8FЯЗаглавная кириллическая Я
0x90аСтрочная кириллическая а
0x91бСтрочная кириллическая б
.........
0x9FяСтрочная кириллическая я
0xA0ЁЗаглавная кириллическая Ё
0xA1ёСтрочная кириллическая ё
0xB0Символ псевдографики (лёгкая заливка)
0xB1Символ псевдографики (средняя заливка)
0xB2Символ псевдографики (тёмная заливка)
0xB3Символ псевдографики (вертикальная линия)
.........
0xDFСимвол псевдографики (полный блок)
0xE0рСтрочная кириллическая р
.........
0xFFяСтрочная кириллическая я

Сравнение с другими кириллическими кодировками

В истории компьютерной обработки текстов на русском языке существовало несколько конкурирующих 8-битных кодировок. Основные из них:

  • CP866 (OEM 866): Использовалась в DOS и текстовых режимах. Отличается наличием псевдографики и порядком букв, не совпадающим с алфавитным.
  • Windows-1251 (ANSI 1251): Разработана Microsoft для графических интерфейсов Windows. Не содержит псевдографики, но включает все буквы кириллицы (включая украинские, белорусские и другие). Порядок букв близок к алфавитному.
  • KOI8-R: Разработана для UNIX-подобных систем и электронной почты. Основана на стандарте ISO 646, что обеспечивало совместимость с 7-битными каналами связи. Порядок букв существенно отличается от CP866 и Windows-1251.
  • ISO 8859-5: Международный стандарт ISO для кириллицы, но не получил широкого распространения в России.

Сравнительная таблица

ХарактеристикаCP866Windows-1251KOI8-R
Основная область примененияDOS, текстовые режимыWindows, GUIUNIX, email
Наличие псевдографикиДаНетНет
Порядок буквНеалфавитныйБлизкий к алфавитномуНеалфавитный
Поддержка буквы «Ё»ДаДаДа
Совместимость с ASCIIДа (первые 128 кодов)Да (первые 128 кодов)Да (первые 128 кодов)

Применение

Несмотря на широкое распространение Unicode, CP866 продолжает использоваться в следующих областях:

  • Эмуляция DOS: Программы-эмуляторы, такие как DOSBox, могут использовать CP866 для корректного отображения кириллических текстов в старых играх и приложениях.
  • Работа с устаревшим ПО: Некоторые промышленные, бухгалтерские и научные программы, созданные в 1990-х годах, до сих пор работают в среде DOS и используют CP866.
  • Встроенные системы: Микроконтроллеры, терминалы и другое оборудование с ограниченными ресурсами могут поддерживать CP866 для отображения текста на русском языке.
  • Телекоммуникационные протоколы: Некоторые протоколы передачи данных (например, в системах телетайпа или радиосвязи) могут использовать CP866 для кодирования кириллицы.
  • Конвертация текстов: При переносе старых текстовых файлов в современные форматы часто требуется преобразование из CP866 в UTF-8 или Windows-1251.

Проблемы и ограничения

  • Несовместимость с Unicode: CP866 не поддерживает символы других языков (например, украинские «і», «ї», «є»), а также многие современные символы (эмодзи, математические знаки). Это делает её непригодной для многоязычных приложений.
  • Ограниченный набор символов: 256 кодовых позиций недостаточно для представления всех символов, необходимых в современном мире.
  • Конфликт с другими кодировками: При неправильной интерпретации байтов (например, если файл в CP866 открыть как Windows-1251) текст отображается как «кракозябры» — нечитаемые символы.
  • Отсутствие поддержки в современных ОС: Большинство современных операционных систем (Windows, Linux, macOS) по умолчанию используют Unicode (UTF-8), и поддержка CP866 требует дополнительных настроек или использования специальных программ.

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

  • Кодировка CP866 иногда называется «альтернативной кодировкой» для DOS, в отличие от основной кодировки CP437 (для латиницы).
  • В CP866 символы псевдографики занимают значительную часть диапазона 128–255, что делает её неэффективной для хранения чисто текстовой информации на русском языке.
  • С появлением Unicode и стандарта UTF-8 необходимость в использовании CP866 и других 8-битных кодировок практически исчезла, однако они остаются важной частью истории компьютерной техники в России и странах СНГ.

Источники

  1. IBM Corporation. IBM Code Page 866 (CP866). Technical documentation.
  2. Стандарт ISO 8859-5:1999. Information technology — 8-bit single-byte coded graphic character sets — Part 5: Latin/Cyrillic alphabet.
  3. К. Ю. Богатырёв. Кодировки кириллицы: история и современность. Журнал «Компьютерные инструменты в образовании», 2005.
  4. Документация к эмулятору DOSBox. Настройка кодировок для DOS-приложений.
  5. Материалы сайта «Кодировки символов» (encoding.ru).

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

На главную BFOmetr →