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

CP 866

CP 866 (также известная как IBM 866, OEM 866, DOS 866, кодовая страница 866, альтернативная кодировка) — это однобайтовая кодовая страница, разработанная корпорацией IBM для использования в операционных системах семейства DOS и среде командной строки Windows. Она предназначена для кодирования символов кириллицы (русского, украинского, белорусского и других алфавитов на основе кириллицы) и является одной из двух наиболее распространённых кириллических кодировок для персональных компьютеров (наряду с Windows-1251).

История

Разработка кодовой страницы 866 была обусловлена необходимостью стандартизировать представление кириллических символов в текстовом режиме на IBM-совместимых компьютерах, работающих под управлением MS-DOS и других операционных систем, не поддерживающих Unicode. До появления CP 866 различные производители и разработчики использовали собственные, часто несовместимые друг с другом кодировки (например, «Основная кодировка» ГОСТ 19768-74, кодировка КОИ-8, кодировка «Альтернативная» для MS-DOS от разных вендоров). Это создавало серьёзные проблемы при обмене текстовыми файлами.

В конце 1980-х — начале 1990-х годов IBM, стремясь унифицировать поддержку кириллицы в своих продуктах, выпустила кодовую страницу 866. Она была включена в состав MS-DOS 6.0 и более поздних версий, а также в Windows 9x (в качестве кодировки для сеансов MS-DOS и консольных приложений). CP 866 стала де-факто стандартом для русского текстового режима в DOS и ранних версиях Windows, а также для многих текстовых редакторов, файловых менеджеров (Norton Commander, FAR Manager) и игр того времени.

Принцип кодирования

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

Особенности размещения символов

  • Кириллица: Строчные и заглавные буквы русского алфавита (от А до Я, включая букву Ё) занимают диапазоны кодов 128–175 (заглавные) и 224–241 (строчные). Буква Ё (ё) имеет коды 240 (заглавная) и 241 (строчная). Это расположение отличается от Windows-1251, где кириллица занимает непрерывный блок с 192 по 255.
  • Псевдографика: Значительная часть кодов (176–223, а также некоторые другие) занята символами для рисования линий, рамок, заливок и других элементов текстового пользовательского интерфейса (TUI). Это было критически важно для программ, работающих в текстовом режиме, таких как Norton Commander, Volkov Commander, FAR Manager, а также для многих игр.
  • Отсутствие некоторых символов: В CP 866 нет многих символов, присутствующих в Windows-1251, таких как кавычки-ёлочки (« »), тире (—), знак евро (€), буквы украинского (Ї, ї, Є, є) и белорусского (Ў, ў) алфавитов, а также буквы для других кириллических языков (например, казахского, таджикского). Это ограничение делало CP 866 непригодной для полноценного отображения текстов на этих языках.

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

В разное время существовало несколько основных кириллических кодировок, каждая из которых имела свою область применения.

КодировкаОбласть примененияКлючевые особенности
CP 866MS-DOS, консоль Windows, FAR Manager, Norton CommanderПоддержка псевдографики, отсутствие многих символов для нерусских языков, несовместимость с Windows-1251.
Windows-1251Графические приложения Windows, веб-страницы (до Unicode)Оптимизирована для отображения текста в графическом интерфейсе, содержит все символы для кириллических языков (включая украинский, белорусский), имеет кавычки и тире.
КОИ-8UNIX-подобные системы, электронная почта (ранние версии)Основана на принципе сохранения читаемости латиницы при потере старшего бита (например, при передаче через 7-битные каналы). Содержит кириллицу, но не имеет псевдографики.
ISO 8859-5Международный стандарт (ISO)Редко использовалась в России, чаще применялась для обмена данными в международных системах.

Основным недостатком CP 866 по сравнению с Windows-1251 была несовместимость с графическим интерфейсом Windows и отсутствие многих символов, необходимых для современных текстов. Недостатком по сравнению с КОИ-8 была уязвимость к потере старшего бита (текст становился нечитаемым).

Применение и наследие

В настоящее время CP 866 практически полностью вытеснена стандартом Unicode (UTF-8, UTF-16), который позволяет кодировать все символы всех языков мира. Однако, в силу исторических причин, она продолжает использоваться в ряде областей:

  • Консоль Windows: В системах семейства Windows (вплоть до Windows 10) кодовая страница 866 является кодовой страницей по умолчанию для консольных приложений (cmd.exe) на русскоязычных версиях. Это означает, что при выводе текста на русском языке в командной строке или в программах, не использующих Unicode, используется именно CP 866.
  • Старые программы и игры: Многие программы, написанные для MS-DOS и ранних версий Windows, используют CP 866. Для их корректного отображения в современных системах часто требуются эмуляторы (например, DOSBox) или специальные программы-конвертеры.
  • Эмуляторы терминалов: Некоторые эмуляторы терминалов (например, PuTTY, ConEmu) поддерживают CP 866 для совместимости со старыми системами или для работы с удалёнными серверами, где эта кодировка всё ещё используется.
  • Встраиваемые системы: В некоторых микроконтроллерах и устройствах с ограниченными ресурсами, где нет возможности использовать Unicode, CP 866 может применяться как более компактная альтернатива.

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

  • Несовместимость с Unicode: При передаче текста из среды, использующей CP 866, в среду, использующую Unicode (например, при копировании текста из консоли в графический редактор), требуется корректное преобразование кодировок. В противном случае текст отображается в виде «кракозябр».
  • Отсутствие символов для других языков: Как упоминалось выше, CP 866 не поддерживает все символы, необходимые для украинского, белорусского, казахского и других кириллических языков. Это делает её непригодной для многоязычных документов.
  • Путаница с другими кодировками: В некоторых старых системах и документах могла использоваться так называемая «Альтернативная кодировка» (OEM 866), которая могла незначительно отличаться от официальной CP 866 (например, в расположении некоторых символов псевдографики).

Источники

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

На главную BFOmetr →