KOI8-R
KOI8-R (Код Обмена Информацией, 8-битный, Русский) — восьмибитная кодовая страница (набор символов), разработанная для кодирования букв кириллицы (русского алфавита) и символов латиницы. Является стандартом де-факто для представления текстов на русском языке в компьютерных системах и сетях, особенно в среде Unix-подобных операционных систем, в 1980—1990-х годах. Входит в семейство кодировок KOI-8, основанных на принципе транслитерации кириллицы в латиницу.
История
Предпосылки создания
До появления KOI8-R для представления кириллицы в компьютерах использовались различные нестандартные решения, в основном семибитные кодировки, такие как КОИ-7 (КОИ-7 Н0, КОИ-7 Н1, КОИ-7 Н2). Семибитные кодировки имели ограниченный набор символов (до 128) и не могли одновременно содержать все буквы русского и латинского алфавитов, а также знаки препинания. С переходом к восьмибитным системам (IBM PC, Apple Macintosh) возникла необходимость в едином стандарте для русскоязычных пользователей.
Разработка и стандартизация
KOI8-R была разработана в 1980-х годах в рамках работ по стандартизации кодировок для советских компьютеров и систем передачи данных. В отличие от других восьмибитных кириллических кодировок (например, CP866, Windows-1251), KOI8-R была ориентирована на использование в сетях и Unix-системах, где доминировала кодировка ASCII. Разработчики стремились сохранить совместимость с ASCII и обеспечить возможность передачи русскоязычных текстов через каналы, поддерживающие только 7-битные коды.
В 1990-х годах KOI8-R стала одной из основных кодировок в Рунете, особенно на серверах под управлением Unix (FreeBSD, Linux). Она была включена в стандарты RFC (Request for Comments) как RFC 1489 (1993 год), что официально закрепило её статус.
Распространение и упадок
С распространением операционных систем Microsoft Windows и стандартизацией кодировки Windows-1251 (CP1251), а затем и Unicode (UTF-8), KOI8-R постепенно утратила своё доминирующее положение. Однако в 1990-х — начале 2000-х годов она широко использовалась в электронной почте (в заголовках и телах писем), в телеконференциях Usenet, на FTP-серверах и в консольных приложениях Unix. В настоящее время KOI8-R считается устаревшей, но всё ещё встречается в старых системах, архивах и некоторых специализированных программах.
Устройство и принцип кодирования
Структура таблицы
KOI8-R является 8-битной кодировкой, то есть каждый символ кодируется одним байтом (8 бит), что позволяет представить до 256 различных символов. Первые 128 кодов (0x00—0x7F) полностью соответствуют стандарту ASCII (латинские буквы, цифры, знаки препинания, управляющие символы).
Вторая половина таблицы (0x80—0xFF) содержит символы кириллицы, а также дополнительные знаки (псевдографика, символы валют, математические знаки). Ключевой особенностью KOI8-R является то, что русские буквы расположены в верхней части таблицы (коды 0xE0—0xFF) таким образом, что при удалении старшего бита (превращении 8-битного кода в 7-битный) русские буквы преобразуются в соответствующие латинские по принципу транслитерации (например, «А» (0xE1) становится «a» (0x61), «Б» (0xE2) — «b» (0x62) и т. д.). Это позволяло передавать русскоязычные тексты через системы, поддерживающие только 7-битные коды (например, старые модемы или почтовые протоколы), с минимальными потерями читаемости.
Таблица символов (основная часть)
| Код (HEX) | Символ | Код (HEX) | Символ | Код (HEX) | Символ | Код (HEX) | Символ | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x80—0x8F | ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ | 0xC0—0xCF | ю а б ц д е ф г х и й к л м н о | 0xD0—0xDF | п я р с т у ж в ь ы з ш э щ ч ъ | 0xE0—0xEF | Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О | 0xF0—0xFF | П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч Ъ |
Примечание: В таблице приведены не все символы; полный набор включает знаки препинания, цифры, латиницу и псевдографику.
Классификация и варианты
KOI8-R является основным вариантом семейства KOI-8 для русского языка. Существуют и другие варианты, предназначенные для других кириллических языков:
- KOI8-U — расширение KOI8-R для украинского языка (добавлены буквы Ґ, Є, І, Ї).
- KOI8-C — для церковнославянского языка.
- KOI8-B — для болгарского языка.
- KOI8-UNI — для универсального использования (содержит символы для многих кириллических алфавитов).
Все варианты сохраняют общий принцип расположения кириллицы в верхней части таблицы.
Применение
Unix-подобные системы
KOI8-R была стандартной кодировкой для консоли и файловых систем в BSD-системах и ранних дистрибутивах Linux. Многие программы (например, текстовые редакторы vi, emacs, почтовые клиенты pine, mutt) по умолчанию использовали KOI8-R. До сих пор в некоторых Unix-системах можно встретить файлы с кодировкой KOI8-R.
Электронная почта и Usenet
В 1990-х годах KOI8-R была одной из основных кодировок для русскоязычной электронной почты. Она использовалась в заголовках MIME (Content-Type: text/plain; charset=KOI8-R) и в телах писем. В телеконференциях Usenet (например, relcom.*) KOI8-R также была распространена.
Веб-сайты
В первые годы существования Рунета (1994—2000) многие сайты использовали KOI8-R. С переходом на UTF-8 и стандартизацию Windows-1251 она практически вытеснена, но некоторые старые сайты или архивы могут использовать KOI8-R.
Программное обеспечение
Некоторые программы, особенно написанные для Unix, поддерживают KOI8-R. Например, текстовые процессоры (WordPerfect для Unix), системы управления базами данных (MySQL, PostgreSQL — в старых версиях), архиваторы (tar, gzip) могут корректно обрабатывать файлы в KOI8-R.
Критика и недостатки
- Ограниченный набор символов: KOI8-R включает только символы русского алфавита, латиницы и ограниченный набор знаков препинания. Она не поддерживает буквы других кириллических языков (украинского, белорусского, болгарского) без дополнительных расширений.
- Несовместимость с Unicode: KOI8-R не может представлять символы, выходящие за пределы кириллицы и ASCII, что делает её непригодной для многоязычных текстов.
- Проблемы с отображением: В некоторых системах (например, в старых версиях Windows) KOI8-R не поддерживалась, что приводило к искажению текста.
- Устаревание: С распространением UTF-8, который поддерживает все символы Юникода, KOI8-R потеряла практическую ценность. Большинство современных программ и веб-сайтов используют UTF-8.
Интересные факты
- Принцип транслитерации в KOI8-R позволял читать русскоязычные тексты в 7-битных системах, хотя и с заменой кириллицы на латиницу. Например, текст «Привет» в 7-битном виде выглядел бы как «prIvet».
- KOI8-R была одной из первых кодировок, включённых в стандарт RFC для русского языка (RFC 1489).
- В некоторых старых Unix-системах KOI8-R использовалась как системная кодировка для локали (например,
ru_RU.KOI8-R). - Кодировка KOI8-R стала основой для разработки других кириллических кодировок, таких как KOI8-U и KOI8-C.
Источники
- RFC 1489 — Registration of a Cyrillic Character Set (KOI8-R)
- Стандарт ISO 8859-5 (частично)
- Документация к операционным системам Unix (FreeBSD, Linux)
- Материалы конференций Usenet (relcom.*)
- Справочники по кодировкам символов (например, «Кодировки кириллицы» К. В. Воронкова)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →