Кодировка 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 или другую современную кодировку.
Примеры кодов символов
| Символ | Код (десятичный) | Код (шестнадцатеричный) |
|---|---|---|
| А | 192 | 0xC0 |
| Б | 161 | 0xA1 |
| В | 226 | 0xE2 |
| Я | 159 | 0x9F |
| я | 239 | 0xEF |
| ░ | 176 | 0xB0 |
| ▒ | 177 | 0xB1 |
| ▓ | 178 | 0xB2 |
| ═ | 205 | 0xCD |
Интересные факты
- CP866 также известна как «OEM 866» или «IBM 866».
- В некоторых источниках CP866 называют «DOS-кодировкой» или «альтернативной кодировкой» (в отличие от основной — CP1251).
- Существует вариант CP866 для украинского языка, который включает дополнительные символы (например, «і», «ї», «є»).
- Из-за отсутствия стандартизации в ранних версиях DOS некоторые символы могли отображаться по-разному в зависимости от версии операционной системы или драйвера клавиатуры.
Источники
- IBM PC DOS Technical Reference Manual
- ГОСТ 19768-93 «Системы обработки информации. Кодировка символов 8-битная для обмена информацией»
- Статья «Кодовая страница 866» в энциклопедии Википедия (русский раздел)
- Материалы по истории кодировок кириллицы (сайты «Компьютерная грамотность», «Русский язык в интернете»)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →