Кракозябры

Материал из Циклопедии
(перенаправлено с «Кракозябра»)
Перейти к навигации Перейти к поиску
Кодировки, кракозябры и подарки // Владимир Тычинский

Кракозя́бры (крякозя́бры) — бессмысленный с точки зрения читателя набор символов, чаще всего получаемый на компьютере в результате неправильного перекодирования осмысленного текста.

Чаще всего кракозябры образуются на выводе программ по причине неправильно настроенной кодировки символов, а также из-за использования неподходящего шрифта. Проблема может быть связана и непосредственно с браузером: например, в Google Chrome русская кодировка CP-866 отсутствует, а многие старые браузеры не умели читать в UTF-16.

Термин[править]

Жаргонизм «кракозябры» не имеет на сегодняшний день устоявшейся формы, существует множество вариаций произношения и написания этого слова: части крако-, кроко-, кряко-; -зябры, -зябли и другие могут встречаться в разных сочетаниях. Кроме того, данное явление может быть обозначено и другими словами, например:

Название «бнопня» (или, более точно, «бНОПНЯ») напрямую происходит от явления неправильной настройки кодировок в почтовых программах. Так выглядит слово «Вопрос», преобразованное из кодировки CP1251 в KOI8-R. По слову «бНОПНЯ» опытные пользователи сразу определяли новичков, задававших вопрос по настройке кодировки.

Этимология[править]

Происхождение слова неизвестно.

В народной этимологии приводится аналогия с детскими каракулями (гибрид крокодила и зебры), а также производное от английского глагола «to crack» — ломать, крушить.

Возможная связь: В польском детском научно-популярном журнале «Горизонты техники для детей», русскоязычная версия которого продавалась в СССР (№ 12 за 1979 год), был опубликован фантастический рассказ «КАИС» Гали и Лены Марьиных, 11 и 13 лет. В рассказе фигурирует форма инопланетной жизни «стреказябли».

В единственном числе «кракозябра» — вообще любой компьютерный символ, для которого в русском языке нет общеизвестного звука (а то и названия), например, значок @.

В других языках[править]

По-японски явление, аналогичное кракозябрам, называется модзибакэ (яп. 文字化け «искажённые символы»), а по-китайски — луаньма (кит. 乱码 «мешанина из знаков»). Болгары называют этот эффект маймуница («обезьянья азбука»), сербы — ђубре («мусор»), немцы — Buchstabensalat («салат из букв») и Krähenfüße («вороньи лапки»), поляки — krzaki («знаки китайского письма; помехи видные в телевизоре, когда нет сигнала», буквально «кусты»), в иврите джибриш(Шаблон:Hebrew).

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

Кракозябры на бандероли, написанные от руки и исправленные почтовым служащим перед доставкой

В 1980-е и 1990-е пользователи компьютеров и с 1990 г. — пользователи русскоязычной части интернета вынуждены были мириться с существованием нескольких конкурирующих кодировок кириллицы: основная — ГОСТ, альтернативная — DOS 866 (Unix KOI8-R, Windows CP-1251, ISO 8859-5), MacCyrillic. В результате неправильной конфигурации серверов и недостаточной совместимости тексты очень часто было невозможно прочесть. Получая сообщения по электронной почте или зайдя на веб-сайт, неопытные пользователи могли наткнуться на странные необычные символы вместо букв кириллицы.

Несмотря на всё более широкое распространение Юникода, феномен кракозябр иногда встречается и сегодня. Есть возможность получить неадекватные символы при использовании неправильных шрифтов при печати на принтере или фотонаборном автомате, неверно настроенной локали программы (когда вместо кодовой страницы CP1251 используется CP1252).

При использовании UTF-8 всё равно остаётся риск получить кракозябры при выводе текста по HTTP: если кодировка нигде не указана, RFC 2616 даёт значение по умолчанию — ISO-8859-1[1].

Примеры[править]

Для примера использована панграмма (без кавычек): «Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.».

Исходная кодировка При декодировании воспринято как Результат
При воспроизведении применяется та же кодировка, что и при создании текста. Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.
Windows-1251 Windows-1252 или
ISO 8859-1[2]
Øèðîêàÿ ýëåêòðèôèêàöèÿ þæíûõ ãóáåðíèé äàñò ìîùíûé òîë÷îê ïîäú¸ìó ñåëüñêîãî õîçÿéñòâà.
KOI8-R ьХПНЙЮЪ ЩКЕЙРПХТХЙЮЖХЪ ЧФМШУ ЦСАЕПМХИ ДЮЯР ЛНЫМШИ РНКВНЙ ОНДЗ╦ЛС ЯЕКЭЯЙНЦН УНГЪИЯРБЮ.
ISO 8859-5 иш№юърџ §ыхъђ№шєшърішџ ўцэћѕ уѓсх№эшщ фрёђ ьюљэћщ ђюыїюъ яюфњИьѓ ёхыќёъюую ѕючџщёђтр.
CP 866 ╪шЁюър ¤ыхъЄЁшЇшърЎш ■цэ√ї уєсхЁэшщ фрёЄ ью∙э√щ Єюыўюъ яюф·╕ьє ёхы№ёъюую їюч щёЄтр.
KOI8-R Windows-1252 или
ISO 8859-1[2]
ûÉÒÏËÁÑ ÜÌÅËÔÒÉÆÉËÁÃÉÑ ÀÖÎÙÈ ÇÕÂÅÒÎÉÊ ÄÁÓÔ ÍÏÝÎÙÊ ÔÏÌÞÏË ÐÏÄߣÍÕ ÓÅÌØÓËÏÇÏ ÈÏÚÑÊÓÔ×Á.
Windows-1251 ыЙТПЛБС ЬМЕЛФТЙЖЙЛБГЙС АЦОЩИ ЗХВЕТОЙК ДБУФ НПЭОЩК ФПМЮПЛ РПДЯЈНХ УЕМШУЛПЗП ИПЪСКУФЧБ.
ISO 8859-5 ћЩвЯЫСб мЬХЫдвЩЦЩЫСУЩб РжЮйШ ЧеТХвЮЩЪ ФСгд ЭЯнЮйЪ дЯЬоЯЫ аЯФпЃЭе гХЬигЫЯЧЯ ШЯкбЪгдзС.
CP 866 √╔╥╧╦┴╤ ▄╠┼╦╘╥╔╞╔╦┴├╔╤ └╓╬┘╚ ╟╒┬┼╥╬╔╩ ─┴╙╘ ═╧▌╬┘╩ ╘╧╠▐╧╦ ╨╧─▀г═╒ ╙┼╠╪╙╦╧╟╧ ╚╧┌╤╩╙╘╫┴.
7 бит {IROKAQ \LEKTRIFIKACIQ @VNYH GUBERNIJ DAST MO]NYJ TOL^OK POD_#MU SELXSKOGO HOZQJSTWA.
ISO 8859-5 Windows-1252 или
ISO 8859-1[2]
ÈØàÞÚÐï íÛÕÚâàØäØÚÐæØï îÖÝëå ÓãÑÕàÝØÙ ÔÐáâ ÜÞéÝëÙ âÞÛçÞÚ ßÞÔêñÜã áÕÛìáÚÞÓÞ åÞ×ïÙáâÒÐ.
Windows-1251 ИШаЮЪРп нЫХЪваШдШЪРжШп оЦЭле УгСХаЭШЩ ФРбв ЬЮйЭлЩ вЮЫзЮЪ ЯЮФксЬг бХЫмбЪЮУЮ еЮЧпЩбвТР.
KOI8-R хьЮчзпО МшузБЮьДьзпФьО НжщКЕ сЦяуЮщьы тпАБ эчИщКы БчшГчз ъчтЙЯэЦ АушЛАзчсч ЕчвОыАБрп.
CP 866 ╚╪р▐┌╨я э█╒┌тр╪ф╪┌╨ц╪я ю╓▌ых ╙у╤╒р▌╪┘ ╘╨ст ▄▐щ▌ы┘ т▐█ч▐┌ ▀▐╘ъё▄у с╒█ьс┌▐╙▐ х▐╫я┘ст╥╨.
CP 866 Windows-1252[2] ˜¨à®ª ï í«¥ªâà¨ä¨ª æ¨ï ëå £ã¡¥à­¨© ¤ áâ ¬®é­ë© ⮫箪 ¯®¤êñ¬ã ᥫì᪮£® 宧ï©á⢠.
Windows-1251 �Ёа®Є п н«ҐЄваЁдЁЄ жЁп о¦­ле ЈгЎҐа­Ё© ¤ бв ¬®й­л© в®«з®Є Ї®¤кс¬г ᥫмбЄ®Ј® 宧п©бвў .
KOI8-R ≤╗Ю╝╙═О М╚╔╙БЮ╗Д╗╙═Ф╗О Н╕╜КЕ ёЦ║╔Ю╜╗╘ ╓═АБ ╛╝И╜К╘ Б╝╚Г╝╙ ╞╝╓ЙЯ╛Ц А╔╚ЛА╙╝ё╝ Е╝╖О╘АБ╒═.
ISO 8859-5 �ЈрЎЊ я эЋЅЊтрЈфЈЊ цЈя юІ­ых ЃуЁЅр­ЈЉ Є ст ЌЎщ­ыЉ тЎЋчЎЊ ЏЎЄъёЌу сЅЋьсЊЎЃЎ хЎЇяЉстЂ .
CP 437 ÿ¿α«¬á∩ φ½Ñ¬Γα¿Σ¿¬áµ¿∩ δσ úπíÑα¡¿⌐ ñáßΓ ¼«Θ¡δ⌐ Γ«½τ«¬ »«ñΩ±¼π ßѽ∞߬«ú« σ«º∩⌐ßΓóá.
UTF-8[3] Windows-1252[2] Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.
Windows-1251 Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.
KOI8-R п╗п╦я─п╬п╨п╟я▐ я█п╩п╣п╨я┌я─п╦я└п╦п╨п╟я├п╦я▐ я▌п╤п╫я▀я┘ пЁя┐п╠п╣я─п╫п╦п╧ п╢п╟я│я┌ п╪п╬я┴п╫я▀п╧ я┌п╬п╩я┤п╬п╨ п©п╬п╢я┼я▒п╪я┐ я│п╣п╩я▄я│п╨п╬пЁп╬ я┘п╬п╥я▐п╧я│я┌п╡п╟.
ISO 8859-5 аЈаИб�аОаКаАб� б�аЛаЕаКб�б�аИб�аИаКаАб�аИб� б�аЖаНб�б� аГб�аБаЕб�аНаИаЙ аДаАб�б� аМаОб�аНб�аЙ б�аОаЛб�аОаК аПаОаДб�б�аМб� б�аЕаЛб�б�аКаОаГаО б�аОаЗб�аЙб�б�аВаА.
CP 866 ╨и╨╕╤А╨╛╨║╨░╤П ╤Н╨╗╨╡╨║╤В╤А╨╕╤Д╨╕╨║╨░╤Ж╨╕╤П ╤О╨╢╨╜╤Л╤Е ╨│╤Г╨▒╨╡╤А╨╜╨╕╨╣ ╨┤╨░╤Б╤В ╨╝╨╛╤Й╨╜╤Л╨╣ ╤В╨╛╨╗╤З╨╛╨║ ╨┐╨╛╨┤╤К╤С╨╝╤Г ╤Б╨╡╨╗╤М╤Б╨║╨╛╨│╨╛ ╤Е╨╛╨╖╤П╨╣╤Б╤В╨▓╨░.
UTF-16 CP 866 (♦8♦@♦>♦:♦0♦O♦ M♦;♦5♦:♦B♦@♦8♦D♦8♦:♦0♦F♦8♦O♦ N♦6♦=♦K♦E♦ 3♦C♦1♦5♦@♦=♦8♦9♦ 4♦0♦A♦B♦ <♦>♦I♦=♦K♦9♦ B♦>♦;♦G♦>♦:♦  ?♦>♦4♦J♦Q♦<♦C♦ A♦5♦;♦L♦A♦:♦>♦3♦>♦ E♦>♦7♦O♦9♦A♦B♦2♦0♦.

Перекодировка[править]

Для восстановления текста (и для перекодировки) в POSIX-совместимых системах можно использовать утилиту iconv, например: iconv -c -f cp1251 -t cp1252 source.txt > target.txt Если возможности применить iconv нет, следует открыть текстовый файл с неизвестной кодировкой с помощью любого популярного браузера, в котором доступно ручное указание кодировки (обычно: Вид — кодировка — … в верхнем меню, либо в контекстном меню). Позже, когда методом перебора удастся получить читаемый текст, его можно скопировать в текстовой редактор и сохранить в нужной кодировке. Также существует множество утилит, позволяющих ручное (с выбором пары кодировок) или автоматическое (вплоть до нескольких уровней глубины) перекодирование текста, например, для Windows: TotalRecode или «Штирлиц».

Перекодировка с целью восстановления исходного текста не всегда возможна. Например, уже при двукратной перекодировке, произошедшей, к примеру, при передаче сообщения через несколько неверно настроенных почтовых серверов, может произойти необратимая потеря информации, так как определённые различные символы исходного текста при определённых условиях могут замениться на другие, но одинаковые неправильные символы, и восстановить такое сообщение невозможно, даже если знать, какие перекодировки и в каком порядке были произведены.

Другие искажения, связанные с перекодировкой[править]

Нередко бывает, что перекодировка осуществляется в правильном направлении, но сам перекодировщик работает не совсем корректно. Например, некоторые программы-перекодировщики преобразуют только базовые русские буквы, а все остальные символы оставляют на месте. В итоге при перекодировке KOI8-R → Windows-1251 буква ё превращается в Ј (сербская буква), значок градуса (°) превращается в њ и т. д. (такие тексты в изобилии встречаются в Интернете, достаточно поискать слова «всЈ» или «њС»).

Другой вариант искажений связан с тем, что в целевой кодировке могут отсутствовать символы, имеющиеся в исходной кодировке. В этом случае отсутствующие символы могут просто выбрасываться, заменяться на символ-заменитель (часто знак вопроса — ?, иногда ) или же заменяться на похожие символы из ASCII (например, знак минуса (U+2212, −) может заменяться на простой дефис (U+002D, -), буква š может заменяться на s и т. д. В случае простого текста такие потери информации неизбежны, однако, если преобразованию подвергается файл HTML или XML, то корректным преобразованием будет замена отсутствующих в целевой кодировке символов на соответствующие мнемоники HTML: например, знак минуса должен заменяться на &minus; или &#8722; буква š должна заменяться на &scaron; или &#353; и т. д.

В культуре[править]

В 1997 г. московское издательство «АРГО-РИСК» выпустило сборник рассказов «Проблемы с кодировкой» (составитель Д. Кузьмин), в котором «все тексты напечатаны не поддающимимся прочтению наборами букв или иных знаков, возникающими обыкновенно при конвертировании текста из одной компьютерной программы в другую как следствие некорректной перекодировки»; в книгу вошли рассказы Николая Байтова, Вячеслава Курицына, Владимира Тучкова, Игоря Жукова, Максима Скворцова и Данилы Давыдова[4]. По мнению Д. Суховей, таким «акционным» жестом издатели, вероятно, стремились привлечь внимание к новым эффектам, возникающими в результате „компьютеризации“ литературы[5].

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

Источники[править]

  1. RFC 2616 — Hypertext Transfer Protocol — HTTP/1.1
  2. 2,0 2,1 2,2 2,3 2,4 Кодовая таблица ISO 8859-1 отличается лишь отсутствием ряда изображённых символов. В системе Microsoft Windows вместо кодовой страницы ISO 8859-1 применяется её расширение Windows-1252.
  3. Варианты декодирования в UTF-8 не приводятся, так как бо́льшая часть русского текста, записанного в 8-битной кодовой странице, будет сочтена ошибочной (не имеющей представления).
  4. Коротко о новых книгах. 1997 // «Литературная жизнь Москвы»
  5. Д. Суховей. Круги компьютерного рая // «Новое литературное обозрение», № 62, 2003.

Ссылки[править]

Кодировки символов
Основы Алфавиттекстнабор символовконверсия
Исторические кодировки Докомп.: семафорная (Макарова)МорзеБодоМТК-2
Комп.: 6-битнаяУППRADIX-50EBCDICДКОИ-8 ) • КОИ-7ISO 646
современное
8-битное
представление
символы ASCIIуправляющиепечатные )
8-битные код.стр. ISO 8859 • кириллица (КОИ-8ГОСТ 19768-87MacCyrillic)
Windows 12501251 (кир.)1252125312541255125612571258WGL4
IBM & DOS 437850852855866 «альт.»МИКНИИ ЭВМ
Многобайтные Традиционные DBCSGB 2312 ) • HTML
Unicode UTFсписок символов (кириллица • латиница)
Связанные темы интерфейс пользователяраскладка клавиатурылокальперевод строкикракозябрытранслитнестандартные шрифты