KOI8-R — кодировка русских Unix-систем и раннего русского интернета. В ней ходила почта и новости Usenet, были написаны многие сайты 1990-х, документация и тексты, которые до сих пор лежат в архивах. Сегодня её почти не используют для новых файлов, но со старыми данными она встречается постоянно.
У KOI8-R есть особенность, по которой её легко узнать. Буквы в ней расположены не по алфавиту, а так, что при отбрасывании старшего бита каждая превращается в похожую латинскую: «Привет, мир» в семибитном виде выглядит как pRIWET, MIR. Так сделали специально, чтобы текст оставался хоть как-то читаемым после старых почтовых серверов, которые передавали только 7 бит. Побочный эффект — у кириллических букв регистр в KOI8-R «перевёрнут» относительно латиницы.
| Как выглядит текст | Что произошло | Исходная → нужная |
|---|---|---|
рТЙЧЕФ, НЙТ | KOI8-R открыт как Windows-1251: кириллица, но с перевёрнутым регистром | Windows-1251 → KOI8-R |
ðÒÉ×ÅÔ, ÍÉÒ | KOI8-R открыт как западноевропейская Windows-1252 | Windows-1252 → KOI8-R |
оПХБЕР, ЛХП | Обратная ошибка: Windows-1251 открыт как KOI8-R | KOI8-R → Windows-1251 |
п÷я─п╦п╡п╣я┌ | UTF-8 открыт как KOI8-R: буквы «п» и «я» вперемешку с псевдографикой | KOI8-R → UTF-8 |
Проще всего вставить текст в поле и нажать «Определить кодировку текста» — конвертер переберёт варианты сам. На этой странице заранее выбран самый частый случай: исходная Windows-1251, нужная KOI8-R.
В командной строке Linux и macOS то же делает iconv -f KOI8-R -t UTF-8 input.txt > output.txt, в Python — open('in.txt', encoding='koi8_r').read() с последующей записью в UTF-8.