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

Кодировка CP866

CP866 — это 8-битная кодовая страница (OEM-кодировка), разработанная компанией IBM для операционной системы DOS и совместимых с ней сред. Предназначена для представления символов кириллицы (русского, украинского, белорусского и других языков) в текстовых файлах и на экране компьютера. Является одной из наиболее распространённых кириллических кодировок для IBM PC-совместимых компьютеров в 1990-х годах.

История

Кодовая страница 866 была создана в конце 1980-х годов компанией IBM в рамках стандартизации набора символов для операционной системы PC DOS. В то время IBM разрабатывала несколько кодовых страниц для различных языков и регионов. CP866 стала OEM-кодировкой для кириллицы, используемой в текстовом режиме DOS.

В отличие от кодировки CP1251 (Windows-1251), разработанной Microsoft для графического интерфейса Windows, CP866 была ориентирована на текстовый режим и сохраняла совместимость с псевдографикой (символы для рисования рамок, таблиц и других элементов интерфейса). Это было необходимо для работы программ, использующих символьный вывод, таких как Norton Commander, Volkov Commander, Far Manager и многие другие.

В 1990-х годах, с распространением персональных компьютеров в России и странах СНГ, CP866 стала основной кодировкой для DOS-приложений. После перехода на Windows и Unicode её использование постепенно сокращалось, но до сих пор встречается в устаревших программах, встроенных системах и при работе с некоторыми текстовыми файлами.

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

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

Вторая половина таблицы (коды 128–255) содержит:

  • Символы кириллицы (строчные и прописные буквы русского алфавита, а также буквы некоторых других славянских языков, например, украинского «і», «ї», «є» и белорусского «ў»).
  • Символы псевдографики — набор символов для рисования рамок, линий, углов и других элементов пользовательского интерфейса. Это важное отличие от CP1251, где псевдографика отсутствует.
  • Некоторые знаки препинания, математические символы и буквы других языков (например, немецкие умлауты, французские акценты).

Расположение кириллических символов в CP866 отличается от их расположения в CP1251 и других кодировках. Например, буква «А» (русская) в CP866 имеет код 0xC0 (192), а в CP1251 — 0xC0 (192), но это совпадение не для всех символов. Буква «Б» в CP866 — код 0xA1 (161), а в CP1251 — 0xC1 (193). Это приводит к тому, что текст, закодированный в CP866, при неправильном декодировании (например, как CP1251) отображается как набор нечитаемых символов.

Применение

Операционная система DOS

CP866 была стандартной кодировкой для кириллического текста в MS-DOS и PC DOS. Все программы, работающие в текстовом режиме (текстовые редакторы, файловые менеджеры, игры), использовали эту кодировку для вывода русского текста на экран.

Файловые менеджеры

Популярные файловые менеджеры, такие как Norton Commander, Volkov Commander и Far Manager, использовали CP866 для отображения имён файлов, папок и меню. Это позволяло работать с кириллическими именами в DOS.

Текстовые редакторы

Многие текстовые редакторы для DOS, например, Lexicon, Multi-Edit, WordStar (в русской версии), по умолчанию работали с CP866. Файлы, созданные в этих редакторах, сохранялись в этой кодировке.

Встроенные системы и терминалы

CP866 до сих пор используется в некоторых встроенных системах, промышленных контроллерах и терминалах, где требуется поддержка кириллицы при ограниченных ресурсах. Также она может встречаться в эмуляторах терминала (например, PuTTY, xterm) при настройке на кириллическую кодировку.

Отличия от других кириллических кодировок

CP1251 (Windows-1251)

  • CP866: OEM-кодировка, используется в DOS, содержит псевдографику, символы кириллицы расположены в диапазоне 0x80–0xFF.
  • CP1251: ANSI-кодировка, используется в Windows, не содержит псевдографики, символы кириллицы расположены в диапазоне 0xC0–0xFF.
  • Несовместимость: Текст, закодированный в CP866, при открытии в системе, настроенной на CP1251, будет отображаться как набор символов (кракозябры), и наоборот.

КОИ-8 (КОИ-8Р, КОИ-8У)

  • КОИ-8: 8-битная кодировка, разработанная для использования в UNIX-системах и электронной почте. Отличается расположением символов: кириллица занимает диапазон 0xE0–0xFF, а псевдографика отсутствует.
  • Совместимость: КОИ-8 и CP866 несовместимы друг с другом.

ISO 8859-5

  • ISO 8859-5: Международный стандарт, но не получил широкого распространения в России. Отличается от CP866 расположением символов и отсутствием псевдографики.

Современное состояние

В настоящее время CP866 считается устаревшей кодировкой. Основной кодировкой для кириллицы в современных системах является Unicode (UTF-8, UTF-16). Однако CP866 всё ещё может встречаться в следующих случаях:

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

Примеры кодов символов

СимволКод (десятичный)Код (шестнадцатеричный)
А1920xC0
Б1610xA1
В2260xE2
Я1590x9F
я2390xEF
1760xB0
1770xB1
1780xB2
2050xCD

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

  • CP866 также известна как «OEM 866» или «IBM 866».
  • В некоторых источниках CP866 называют «DOS-кодировкой» или «альтернативной кодировкой» (в отличие от основной — CP1251).
  • Существует вариант CP866 для украинского языка, который включает дополнительные символы (например, «і», «ї», «є»).
  • Из-за отсутствия стандартизации в ранних версиях DOS некоторые символы могли отображаться по-разному в зависимости от версии операционной системы или драйвера клавиатуры.

Источники

  • IBM PC DOS Technical Reference Manual
  • ГОСТ 19768-93 «Системы обработки информации. Кодировка символов 8-битная для обмена информацией»
  • Статья «Кодовая страница 866» в энциклопедии Википедия (русский раздел)
  • Материалы по истории кодировок кириллицы (сайты «Компьютерная грамотность», «Русский язык в интернете»)

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

На главную BFOmetr →