КОИ-8

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску


Как то раз два гусара в Йоркшире
Переслать КОИ-8 решили
Но проклятый модем
Выдал им КОИ-7
КОИ-6, КОИ-5 и четыре

— Анонимус вспоминает

КОИ-8 (код обмена информацией, 8 бит, KOI8) — восьмибитная ASCII-совместимая кодовая страница, разработанная для кодирования букв кириллических алфавитов. Имеет настолько широкое распространение на просторах России, что даже медведи на улицах свободно на ней говорят[1].

История и особенности[править]

КОИ-8 (а сначала КОИ-7) родилось из практических соображений во времена глубокой древности, когда системы, не поддерживающие кириллицу даже теоретически (то есть владеющие только латинским алфавитом и использующие 5-битные таблицы символов, на 32 знака, а позднее 7-битные, на 128 знаков) были не исключением, а повседневной нормой (в частности, таковыми были почтовые сервера).

Но 146% населения и тогда не хотели читать на мунспике, а требовали русских букв. Увы, полный набор из латинских (26 больших и 26 маленьких), русских (по 33), 10 цифр и пачки знаков препинания никак не лез в 7 бит, в результате родилось гениальное решение — все malen'kie latinskie принудительно заменили на БОЛЬШИЕ РУССКИЕ, получилась кодировка КОИ7Н2 (набор 2), в которой вообще не было маленьких букв, ОДИН СПЛОШНОЙ КАПСЛОК. Для совместимости с буржуями скопировали их раскладку — только латинские, большие и маленькие — в КОИ7Н0 (набор 0), и по аналогии сделали КОИ7Н1 — только русские, но сначала маленькие, а затем БОЛЬШИЕ — костыль, чтобы сохранить совместимость наборов Н2 и Н1.

Ru RU.KOI8-table.png

Порядок русских букв в КОИ-7 выбрали исходя из максимальной похожести на латинские, так русская буква «А» превратилась в латинскую «A», но буква «Я» — почему-то в «Q» (см. Куковлев). Таким образом, при случайном выводе русского 7-битного текста на буржуйской 7-бит аппаратуре, он без особых потерь превращался в транслит капслоком. Это породило такой мем, как иНЖАЛИД ДЕЖИЦЕ, являющийся сообщением об ошибке (Invalid device) терминала Видеотон, а также некоторых спектрумов, в которых маленькая латиница отсутствовала. Ныне этот мем благополучно забыт, но нестыковки между порядком букв в КОИ-8 и других кодировках кириллицы порождают новые лулзы и по сей день, см. бНОПНЯ.

КОИ-8 прост как мычание — незатейливо склеили два набора КОИ7Н0 и КОИ7Н1 и получили полезную 8-битную кодировку, которая при потере 8-го бита сохраняла читаемость в транслите, хотя и с инвертированным регистром.

В результате, от всех прочих кодировок, применяемых для кириллицы, КОИ-8 отличается тем, что порядок букв в ней не соответствует алфавиту ни одного из использующих кириллицу человеческих языков. Слава (почтовым) роботам!

В сети[править]

В своё время кодировка КОИ-8 люто, бешено форсилась Андреем «ache» Черновым, сатанистом и любителем Кроули, что какбе намекает. Ache же был автором древнего и в то время практически единственного пакета электронной почты для DOS — UUPC (не путать с протоколом uucp), так что ему можно. А во время инсталляции оного пакета удивлённый юзер мог лицезреть автора с черепом в руках, ага. Тот же Ache пропихнул KOI8-R в RFC 1489, что дало повод считать KOI8-R «стандартной кодировкой русского интернета» и увеличило ЧСВ создателя и первых юзеров на 9000.

Это вызвало глубокое неприятие со стороны пользователей DOS, Windows и даже Mac (у которых тоже была своя кодировка mac-cyrillic) и вызвало войну всех против всех. Бедные вебмастера делали по четыре копии сайта в разных кодировках, а беспощадные русские быдлокодеры ковали свою вундервафлю — Russian Apache, который эвристически пытался угадать кодировку на стороне юзера (иногда случайно перекодируя невинные GIF-ки с проном). Только изготовители перекодировщиков ловили свой мутный PROFIT на войне кодировок и наплодили over 9000 быдло-перекодировщиков.

Чуть позже подтянулись укры, которым ache позабыл выдать расовых хохло-букв и запилили незалэжный KOI8-U (RFC 2319), а позже ещё over 9000 разных малых наций с алфавитами на основе кириллицы.

Надо сказать, что правоверные линуксоиды встретили кодировку КОИ-8 как родную — в те далекие времена многие программы для Линуха страдали 7-битностью и КОИ-8 пришёлся очень кстати. А у бздунов KOI8-R это вообще генеральная линия партии и ставится принудительно автоматически при выборе русского, хотя для эстетов Юникод всё же имеется, начиная с FreeBSD 7.

Нынче[править]

В смене кодировок можно увидеть не только ЭТО!

Первый гвоздь в гроб КОИ-8 забил стандарт MIME. Выяснилось, что нормальному почтовому клиенту не важно в какой кодировке написан текст, лишь бы в нём был правильно выставлен Charset. Почтовик знает их все, и ему похуй. Конечно, если содержимое Windows-1251 промаркировать KOI8-R, получится бНОПНЯ. Точно также во всех браузерах главное — верно промаркировать на сервере, а уж браузер покажет.

Второй и окончательный гвоздь забил Юникод в формате UTF-8, который содержит все символы всех мунспиков. Нынче только желающие быстро работать со строками через MMX/GPGPU сопротивляются UTF-8 и настаивают на тотальном использовании КОИ-8 или другого восьмибита с фиксированной длиной символа, остальные хомячки просто юзают Юникод, даже не замечая его недостатков.

Интересные факты[править]

Так как русские буквы в КОИ-8 занимают те же коды, что и в cp1251, после насильного двадцатикратного прогона

iconv -f cp1251 -t koi8-r

получается та же изначальная строка.

См. также[править]

Примечания[править]

  1. На самом деле пиндосы считали, что медведи должны говорить на ISO-8859-5, и которую в СССР даже объявили госстандартом в 1980-х из-за тупой копипасты совковым комитетом по стандартизации документов, в которых они не шарили. Но IRL всё оказалось иначе.
Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++Scala
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёздыПрограммист (существо)
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplaceФреймворкБыдлокодIndex.phpОхота за жукамиКуМирКлеточный автомат
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3DКнижный PythonMallocСвязный списокSOLIDООПУказательNULLWeLang++
ЛюдиИлья КанторЮрий КлючевскийЭдуард ЛаасЭдвард СноуденСеймур Пейперт
Прочее++i + ++iDeadline%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодач