Перейти к содержимому

Кодировки

Черновик
Черновик. Статья в процессе написания.

Если ты открывал письмо от друга и видел вместо текста набор странных символов вроде “пПЙЧЕФ, ЛБЛ ДЙМБ?” — добро пожаловать в ад кодировок Рунета 90-х. Время, когда русский текст был не просто текстом, а полем битвы операционных систем, почтовых клиентов и стандартов. Время, когда слово “кракозябры” знали все.

Что такое кодировка и почему их так много?

В компьютере нет букв — есть только числа. Чтобы показать букву “А”, компьютер использует таблицу соответствия: число 65 = буква “A”. Для английского это просто: есть стандарт ASCII, 128 символов, все договорились.

Для русского всё сложнее. Русских букв 33, плюс заглавные — итого 66 символов. Куда их впихнуть в таблицу? Каждая операционная система и каждая платформа решала это по-своему. Результат — хаос.

В 90-х годах в Рунете одновременно существовало как минимум четыре популярных кодировки:

  • KOI8-R — стандарт Unix и интернета
  • CP-1251 (Windows-1251) — стандарт Windows
  • CP-866 — стандарт DOS
  • ISO 8859-5 — международный стандарт, которым почти никто не пользовался

Написал письмо в Windows (CP-1251), а получатель открыл его в Unix (KOI8-R)? Привет, кракозябры.

KOI8-R: когда Unix правил балом

KOI8-R (Kod Obmena Informatsiey, 8 bit, Russian) — кодировка, восходящая к советскому стандарту КОИ-8 (ГОСТ 19768-74). [НЕ ПРОВЕРЕНО] Современный вариант KOI8-R был зафиксирован в RFC 1489 в 1993 году. Она стала стандартом для Unix-систем и, соответственно, для всего раннего интернета.

Почему именно KOI8-R победила в интернете? Просто: первые серверы Рунета крутились на Unix, первые почтовые системы — тоже Unix. Если ты хотел завести почтовый ящик на бесплатном почтовике, высока была вероятность, что письма придут в KOI8-R.

Красота KOI8-R в том, что русские буквы в ней расположены не по алфавиту, а по схожести с латиницей. Если отбросить восьмой бит (превратить “А” в “A”), текст оставался читаемым. “пПЙЧЕФ” превращалось в “pRIVET” — кривовато, но понятно. [НЕ ПРОВЕРЕНО] Эта фича спасла тысячи писем в эпоху 7-битных почтовых систем.

CP-1251: империя Windows наносит ответный удар

Windows-1251 — кодировка, которую Microsoft впихнула в Windows 95 и все последующие версии. Для обычного пользователя, который работал только в Windows и не лез в интернет, это была идеальная кодировка: всё работало, всё отображалось.

Проблема началась, когда пользователи Windows стали выходить в интернет. Браузеры по умолчанию ожидали KOI8-R, а получали CP-1251. Сайты отображались кракозябрами. Письма приходили нечитаемыми. Форумы превращались в свалку символов.

Решение? Вручную переключать кодировку в браузере. В Opera это была комбинация клавиш, в Internet Explorer — меню “Вид → Кодировка → Кириллица (Windows)”. Опытные пользователи делали это на автомате. Новички звонили в техподдержку провайдера и орали: “У меня сайты не работают!”

CP-866: привет из DOS

CP-866 — это кодировка DOS, которая к концу 90-х уже была анахронизмом, но всё ещё встречалась. Особенно в старых архивах, в текстовых файлах с дискет, в логах старых BBS.

Открываешь readme.txt из архива игры, скачанной с Горбушки, — а там кракозябры. Потому что файл был упакован в DOS, в CP-866, а ты открыл его в Блокноте Windows, который ожидал CP-1251.

Решение? Специальные утилиты-перекодировщики или Far Manager, который умел переключать кодировки на лету.

Кракозябры: культурный феномен

Кракозябры (или крокозябры — были варианты написания) — это символы, которые появлялись вместо нормального текста при неправильной кодировке. “пПЙЧЕФ, ЛБЛ ДЙМБ?” вместо “Привет, как дела?”. “╨Я╤А╨╕╨▓╨╡╤В” вместо “Привет”.

Кракозябры стали мемом задолго до того, как слово “мем” вошло в обиход. Это был символ технической некомпетентности, символ хаоса, символ эпохи. Получить письмо в кракозябрах — норма. Увидеть форум, где половина сообщений нечитаема — норма.

[НЕ ПРОВЕРЕНО] В 1998 году на Фидонете даже появилась шуточная эхоконференция SU.KRAKOZYABRY, где нарочно писали в неправильных кодировках. Это был такой метаюмор: кракозябры про кракозябры.

Электронная почта: поле битвы кодировок

Почта в 90-х — это отдельный ад. Ты пишешь письмо в Outlook Express (CP-1251), отправляешь другу, который читает его в Unix-клиенте (KOI8-R). Он видит кракозябры. Отвечает в KOI8-R, ты получаешь кракозябры.

Чтобы переписываться нормально, нужно было либо договориться об одной кодировке, либо использовать умный почтовый клиент. The Bat! был одним из лучших: он автоматически определял кодировку входящих писем и перекодировал на лету. Это была убийственная фича — половина пользователей выбирала The Bat! именно за это.

Другие клиенты тоже учились. Mozilla Thunderbird, Opera M2, даже Outlook — все добавили автоопределение кодировок. Но в первой половине 90-х это был дикий запад: каждое письмо — лотерея.

Перекодировщики: костыль, ставший нормой

Раз уж система не могла договориться о единой кодировке, появились утилиты-перекодировщики. Маленькие программки, которые брали текст в одной кодировке и конвертировали в другую.

strconv, istrconv, CharsetDetector — эти утилиты знали все, кто работал с текстом. Скопировал кракозябры из браузера, вставил в перекодировщик, выбрал “из KOI8-R в CP-1251” — получил нормальный текст. Костыль? Да. Но работал.

Некоторые перекодировщики даже встраивались в браузеры как плагины. Правой кнопкой по странице — “перекодировать” — выбрал нужную кодировку — профит.

Unicode: свет в конце тоннеля

В конце 90-х появился Unicode — стандарт, который обещал решить все проблемы. Одна кодировка для всех языков мира. Русский, английский, китайский, арабский — всё в одной таблице, никаких конфликтов.

UTF-8 — это способ записи Unicode, который стал стандартом интернета. В начале 2000-х сайты начали массово переходить на UTF-8. Браузеры начали поддерживать его по умолчанию. Почтовые клиенты тоже.

Но переход был не мгновенным. Ещё в середине 2000-х можно было нарваться на старый сайт в KOI8-R или на письмо в CP-1251. Полная победа UTF-8 случилась только к концу 2000-х — началу 2010-х.

Наследие: почему мы до сих пор помним кракозябры

Кодировки — это не просто техническая проблема. Это повседневность раннего Рунета, когда единых стандартов не было, а каждый делал как хотел.

Кракозябры научили целое поколение разбираться: «А в какой кодировке этот текст?» — и руками переключать то, что сегодня работает автоматически.

Сегодня UTF-8 победил, и новое поколение не знает, что такое “переключить кодировку в браузере”. Но мы-то помним. Помним пПЙЧЕФ, помним ╨Я╤А╨╕╨▓╨╡╤В, помним письма, которые нужно было перекодировать три раза, чтобы прочитать.

См. также

  • The Bat! — почтовый клиент с лучшей в Рунете поддержкой кодировок
  • ICQ — где кодировки тоже были проблемой
  • FidoNet — где кодировки решали ещё в 80-х
  • Бесплатная электронная почта — где кракозябры были нормой
  • Opera — браузер с удобным переключением кодировок

Статья в энциклопедии Рунет 90-х и 2000-х. Проект FolkUp. Содержание предоставляется «как есть», без гарантий полноты и точности.