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

Кириллические кодировки

Кириллические кодировки — это наборы символов (кодовые страницы), предназначенные для представления букв кириллицы и других знаков, используемых в письменности языков на основе кириллического алфавита, в цифровых системах. Они обеспечивают соответствие между числовыми кодами (обычно от 0 до 255) и графическими символами, позволяя компьютерам хранить, обрабатывать и отображать текст на русском, украинском, белорусском, болгарском, сербском и других языках. До появления Unicode, который объединил все письменности в единый стандарт, кириллические кодировки были основным способом работы с кириллицей в вычислительной технике, и их разнообразие порождало проблемы совместимости.

История

Ранние этапы (1960–1980-е годы)

Первые попытки кодирования кириллицы для ЭВМ относятся к 1960-м годам. В СССР использовались различные ведомственные и заводские кодировки, часто несовместимые друг с другом. Например, для ЕС ЭВМ (аналог IBM System/360) применялась кодовая страница, основанная на стандарте ГОСТ 19768-74, который определял набор из 96 символов (включая заглавные и строчные буквы русского алфавита, цифры и знаки препинания). Однако из-за отсутствия единого стандарта на уровне операционных систем и прикладного программного обеспечения обмен данными между разными системами был затруднён.

Эпоха PC и MS-DOS (1980–1990-е годы)

С распространением персональных компьютеров в 1980-х годах возникла необходимость в стандартизации кириллических кодировок для IBM PC-совместимых машин. Наиболее известными стали:

  • КОИ-8 (Код Обмена Информацией, 8-битный). Разработана в 1970-х годах для использования в сетях и на телетайпах. Её особенность — сохранение читаемости латинского текста при потере старшего бита (например, при передаче через 7-битные каналы). Существовало несколько вариантов: КОИ-8Р (для русского языка), КОИ-8У (для украинского), КОИ-8Б (для болгарского) и другие.
  • CP866 (кодовая страница 866). Разработана компанией Microsoft для MS-DOS и OS/2. Включала все буквы русского алфавита, а также символы псевдографики для построения таблиц и рамок в текстовом режиме. Была де-факто стандартом для русскоязычных версий MS-DOS.
  • CP1251 (Windows-1251). Создана Microsoft для операционной системы Windows 3.1 и более поздних версий. Отличалась от CP866 отсутствием символов псевдографики (они были заменены на дополнительные знаки пунктуации и буквы для языков народов России, Украины, Белоруссии и других). Стала основной кодировкой для Windows в странах СНГ и Восточной Европы.

Эпоха интернета и Unicode (1990-е — 2000-е годы)

С развитием глобальной сети интернет проблема несовместимости кодировок обострилась. Веб-страницы, электронные письма и файлы, созданные в одной кодировке, часто отображались «кракозябрами» в других. Для решения этой проблемы в 1991 году был разработан стандарт Unicode (UTF-16, затем UTF-8). UTF-8, который использует от 1 до 4 байтов на символ, стал доминирующей кодировкой для веба и современных операционных систем. К началу 2010-х годов большинство веб-сайтов и программ перешли на UTF-8, хотя старые кириллические кодировки (особенно Windows-1251) всё ещё встречаются в устаревших системах и архивах.

Классификация

По типу операционной системы

  • Для MS-DOS: CP866, CP855 (для южнославянских языков), CP808 (для болгарского).
  • Для Windows: Windows-1251, Windows-1252 (для западноевропейских языков, частично пересекается с кириллицей).
  • Для Unix/Linux: КОИ-8, UTF-8, ISO 8859-5 (международный стандарт, но редко использовался в России).
  • Для Mac OS: MacCyrillic (кодировка для классической Mac OS).

По набору символов

  • Русскоязычные: Содержат только буквы русского алфавита (33 буквы), знаки препинания и цифры. Примеры: CP866, Windows-1251, КОИ-8Р.
  • Многоязычные: Включают буквы для нескольких языков (русский, украинский, белорусский, болгарский, сербский, македонский, а также некоторые символы для кавказских и тюркских языков). Примеры: Windows-1251 (содержит буквы для украинского, белорусского, болгарского, сербского, македонского, а также для казахского, киргизского, татарского и других языков), КОИ-8У (украинский), КОИ-8Б (болгарский).
  • С псевдографикой: Включают символы для рисования рамок, таблиц и стрелок в текстовом режиме. Пример: CP866.

По способу кодирования

  • 8-битные (однобайтовые): Каждый символ кодируется одним байтом (256 возможных значений). Это наиболее распространённый тип до Unicode.
  • 7-битные (редко): Использовались в ранних системах, например, КОИ-7 (только латиница и цифры, кириллица отсутствовала).

Характеристики основных кодировок

Windows-1251

  • Разработчик: Microsoft.
  • Год создания: 1995 (для Windows 95).
  • Диапазон кодов: 0–127 (ASCII), 128–255 (кириллица и дополнительные символы).
  • Поддерживаемые языки: Русский, украинский, белорусский, болгарский, сербский, македонский, а также казахский, киргизский, татарский, башкирский, чувашский и другие.
  • Особенности: Не содержит символов псевдографики. Включает букву «ё» (код 184 — строчная, 168 — заглавная). Широко использовалась в Windows до перехода на UTF-8.

CP866

  • Разработчик: Microsoft (на основе кодировки IBM CP437).
  • Год создания: 1984 (для MS-DOS 3.0).
  • Диапазон кодов: 0–127 (ASCII), 128–255 (кириллица и псевдографика).
  • Поддерживаемые языки: Русский, украинский (частично), белорусский (частично).
  • Особенности: Содержит 32 символа псевдографики (коды 176–223). Буква «ё» отсутствует в стандартной версии (код 240 — строчная, 241 — заглавная в некоторых вариантах). Использовалась в текстовых файлах и программах для MS-DOS.

КОИ-8Р

  • Разработчик: Коллектив советских специалистов (в рамках разработки ЕС ЭВМ).
  • Год создания: 1970-е.
  • Диапазон кодов: 0–127 (ASCII), 128–255 (кириллица).
  • Поддерживаемые языки: Русский.
  • Особенности: Коды кириллических букв расположены в том же порядке, что и латинские, но со сдвигом на 128 (например, «А» — код 193, «а» — 225). При потере старшего бита латинский текст остаётся читаемым (кириллица превращается в латиницу). Использовалась в Unix-системах, электронной почте и телетайпной связи.

ISO 8859-5

  • Разработчик: ISO (Международная организация по стандартизации).
  • Год создания: 1988.
  • Диапазон кодов: 0–127 (ASCII), 128–255 (кириллица).
  • Поддерживаемые языки: Русский, украинский, белорусский, болгарский, сербский, македонский (частично).
  • Особенности: Является международным стандартом, но редко использовался в России из-за конкуренции с Windows-1251 и КОИ-8. Включает букву «ё» (код 184 — строчная, 168 — заглавная).

Применение

Историческое

  • MS-DOS: CP866 использовалась для текстового интерфейса, файловых менеджеров (Norton Commander, Volkov Commander), текстовых редакторов (Lexicon, ChiWriter) и игр.
  • Windows: Windows-1251 применялась для всех приложений Windows (Word, Excel, Internet Explorer), а также для веб-страниц и электронной почты.
  • Unix/Linux: КОИ-8Р была стандартом для консольных приложений, почтовых клиентов (pine, mutt) и веб-серверов (Apache) до перехода на UTF-8.
  • Интернет: До середины 2000-х годов большинство русскоязычных сайтов использовали Windows-1251 или КОИ-8Р. Переход на UTF-8 начался с 2005–2007 годов.

Современное

  • Устаревшие системы: Кириллические кодировки всё ещё встречаются в старых базах данных, архивных документах, встроенных системах (например, в банкоматах, кассовых аппаратах, промышленных контроллерах), а также в некоторых программах для MS-DOS (эмуляторы DOSBox).
  • Обратная совместимость: При чтении старых файлов или открытии веб-страниц, созданных до 2010 года, может потребоваться ручное переключение кодировки в браузере или текстовом редакторе.
  • Специфические задачи: В некоторых нишевых областях (например, в телетайпной связи, на старых Unix-серверах) КОИ-8Р продолжает использоваться из-за своей устойчивости к ошибкам передачи.

Проблемы и критика

Несовместимость

Основная проблема кириллических кодировок — отсутствие единого стандарта. Файл, созданный в Windows-1251, мог отображаться «кракозябрами» в системе, использующей CP866 или КОИ-8Р. Это требовало от пользователей ручного переключения кодировки или использования специальных конвертеров (например, iconv в Unix).

Ограниченный набор символов

8-битные кодировки могут содержать только 256 символов, из которых 128 заняты ASCII. Оставшиеся 128 кодов не позволяют одновременно поддерживать все языки, использующие кириллицу. Например, Windows-1251 не включает буквы для некоторых кавказских языков (аварский, чеченский) или для сербского (буква «Ђ»). Для решения этой проблемы создавались расширенные версии (например, CP1251 для украинского), но они не были стандартизированы.

Отсутствие буквы «ё»

В некоторых кодировках (например, CP866) буква «ё» отсутствовала или имела нестандартный код. Это приводило к тому, что в текстах её часто заменяли на «е» или использовали специальные символы.

Переход на Unicode

С появлением Unicode (UTF-8) все эти проблемы были решены: UTF-8 поддерживает все символы кириллицы (и других письменностей) в одном наборе, не требует переключения кодировок и совместим с ASCII. Однако переход на UTF-8 занял более 10 лет и сопровождался трудностями, связанными с обновлением программного обеспечения и баз данных.

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

  • Кодировка КОИ-8Р была разработана таким образом, что при передаче через 7-битный канал (например, по телетайпу) кириллические символы превращались в латинские, что позволяло сохранять читаемость текста (например, «Привет» становилось «pRIWET»). Это свойство использовалось в ранних электронных письмах.
  • В CP866 символы псевдографики (коды 176–223) были заимствованы из кодировки IBM CP437, которая использовалась в оригинальном IBM PC. Это позволяло создавать текстовые интерфейсы с рамками и таблицами, что было важно для программ MS-DOS.
  • Windows-1251 стала настолько популярной в России, что многие пользователи до сих пор называют её «русской кодировкой», хотя она не является официальным стандартом.
  • В 1990-х годах существовала так называемая «война кодировок» между сторонниками Windows-1251 и КОИ-8Р. Первые утверждали, что Windows-1251 удобнее для Windows, вторые — что КОИ-8Р надёжнее для интернета и Unix.

Источники

  • ГОСТ 19768-74 «Система обработки информации. Кодировка 8-битная для обмена информацией».
  • Документация Microsoft по кодовым страницам (MSDN).
  • Стандарт ISO 8859-5:1988 «Information technology — 8-bit single-byte coded graphic character sets — Part 5: Latin/Cyrillic alphabet».
  • «Кодировки кириллицы» — статья в журнале «Мир ПК», 1998.
  • «Unicode и кириллица» — доклад на конференции «Русский интернет», 2005.

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

На главную BFOmetr →