В общем, попался мне на глаза текст. Ну, скажем, вот
Кодировка весьма любопытная: вроде бы koi8-r - открывается и читается нормально,
но есть две проблемы:
1. Перепутан регистр символов. То есть все буквы, которые должны быть заглавными - строчные и наоборот.
2. Заглавный Ъ заменен на небуквенный символ.
Стало интересно, я попробовал воспроизвести цепочку перекодировок - не смог.
На первый взгляд - это бНОПНЯ, однако в бНОПНЯ перепутаны не только регистры, но и сами буквы.
А в текстах по сслылке буквы на своих местах, перепутан только регистр. И только у кириллистических символов.
При этом в Сети есть упоминания о том, что из этих файлов удавалось собрать нормальный pdf.
Я не очнень верю, что из данных исходников получится нормальный файл без корректировки.
И я склоняюсь к мнению, что имела место какая-то другая ошибка, а не только двойная/некорректная перекодировка.
Конечно, нет никакой проблемы прогнать это через tr, но интересно, как это вообще получилось.
Потому что порой попадается нечто подобное.
Да, на всякий случай замечу, что онлайн-декодеры в данном случае не помогли. Иначе бы я не спрашивал.
Итак, кто может просветить меня по данному вопросу?
Странная кодировка текста (Это результат многократной перекодировки или что-то другое?)
Модератор: Bizdelnick
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Странная кодировка текста
Вообще-то такое получается, если интерпретировать файл в CP-1251. Если он родом из 1978 года, сложно отследить историю всех надругательств над ним…Hephaestus писал: ↑02.10.2018 13:57Кодировка весьма любопытная: вроде бы koi8-r - открывается и читается нормально,
но есть две проблемы
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Странная кодировка текста
Не уловил. Можно чуть подробнее?Bizdelnick писал: ↑02.10.2018 14:18Вообще-то такое получается, если интерпретировать файл в CP-1251.
1978 - это год появления TeX? Я думаю, файл не настолько старый.Bizdelnick писал: ↑02.10.2018 14:18Если он родом из 1978 года, сложно отследить историю всех надругательств над ним…
Есть косвенные признаки, что это 1999-2000 год.
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Странная кодировка текста
Shell
% curl http://lib.ru/CTOTOR/KNUT/004-033.tex | iconv -f cp1251 | head
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 66834 0 66834 0 0 152k 0 --:--:-- --:--:-- --:--:-- 153k
\input style
\hyphenation{АВ-ТО-МО-БИ-ЛЕЙ}
%% 4
\UDC{681.142.2}
\vfill
тРЕТИЙ ТОМ ИЗВЕСТНОЙ МОНОГРАФИИ ОДНОГО ИЗ КРУПНЕЙШИХ АМЕРИКАНСКИХ СПЕЦИАЛИСТОВ ПО
ПРОГРАММИРОВАНИЮ д. кНУТА (ПЕРВЫЙ ТОМ ВЫШЕЛ В ИЗДАТЕЛЬСТВЕ \rlq{}мИР\rrq{} В 1976 Г.,
ВТОРОЙ---В 1977 Г.) СОСТОИТ ИЗ ДВУХ ЧАСТЕЙ: \rlq{}сОРТИРОВКА\rrq{} И \rlq{}пОИСК\rrq{}. в НИХ
ПОДРОБНО ИССЛЕДУЮТСЯ РАЗЛИЧНЫЕ АЛГОРИТМЫ ВНУТРЕННЕЙ И ВНЕШНЕЙ СОРТИРОВКИ, ИЗУЧАЮТСЯ
%
Это год выхода данного перевода, который, очевидно, как и оригинал, был свёрстан в TeX. Каким преобразованиям файл подвергался в дальнейшем — вряд ли возможно установить, но сомневаюсь, что это независимо выполненная кем-то ещё вёрстка.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Странная кодировка текста
Вообще-то там указано имя и контакты человека, кто изготовил эти файлы.
И если только это не сотрудник издательства, тогда это самая что ни на есть независимая вёрстка.
Кроме того, там есть ещё одна книга (Дейкстра), TeX-файлы изготовлены тем же человеком, и здесь-то точно
независимая вёрстка, поскольку указано, что это OCR. При этом проблема с кодировкой - точно такая же: инверсия регистра кириллицы и замена твердого знака на небуквенный символ.
Что касается приведенной Вами команды. Здесь как раз и начинается самое интересное.
В моей системе вывод данной команды выглядит так:
Shell
curl http://lib.ru/CTOTOR/KNUT/004-033.tex | iconv -f cp1251 | head
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 66834 0 66834 0 0 505k 0 --:--:-- --:--:-- --:--:-- 505k
\input style
\hyphenation{бч-фп-нп-вй-мек}
%% 4
\UDC{681.142.2}
\vfill
Фтефйк фпн йъчеуфопк нпопзтбжйй пдопзп йъ лтхроекыйи бнетйлбоулйи урегйбмйуфпч рп
ртпзтбннйтпчбойа Д. Лохфб (ретчщк фпн чщыем ч йъдбфемшуфче \rlq{}Нйт\rrq{} ч 1976 з.,
чфптпк---ч 1977 з.) упуфпйф йъ дчхи юбуфек: \rlq{}Уптфйтпчлб\rrq{} й \rlq{}Рпйул\rrq{}. Ч ойи
рпдтпвоп йуумедхафус тбъмйюоще бмзптйфнщ чохфтеооек й чоеыоек уптфйтпчлй, йъхюбафус
Shell
curl http://lib.ru/CTOTOR/KNUT/004-033.tex | iconv -f koi8-r | head
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 66834 0 66834 0 0 530k 0 --:--:-- --:--:-- --:--:-- 530k
\input style
\hyphenation{АВ-ТО-МО-БИ-ЛЕЙ}
%% 4
\UDC{681.142.2}
\vfill
тРЕТИЙ ТОМ ИЗВЕСТНОЙ МОНОГРАФИИ ОДНОГО ИЗ КРУПНЕЙШИХ АМЕРИКАНСКИХ СПЕЦИАЛИСТОВ ПО
ПРОГРАММИРОВАНИЮ д. кНУТА (ПЕРВЫЙ ТОМ ВЫШЕЛ В ИЗДАТЕЛЬСТВЕ \rlq{}мИР\rrq{} В 1976 Г.,
ВТОРОЙ---В 1977 Г.) СОСТОИТ ИЗ ДВУХ ЧАСТЕЙ: \rlq{}сОРТИРОВКА\rrq{} И \rlq{}пОИСК\rrq{}. в НИХ
ПОДРОБНО ИССЛЕДУЮТСЯ РАЗЛИЧНЫЕ АЛГОРИТМЫ ВНУТРЕННЕЙ И ВНЕШНЕЙ СОРТИРОВКИ, ИЗУЧАЮТСЯ
При этом, если файл сохранить, получается следующее:
Shell
file 004-033.tex
004-033.tex: LaTeX document, ISO-8859 text
Shell
enca 004-033.tex
MS-Windows code page 1251
LF line terminators
То есть явно что-то напутали с кодировками.
Опять же, мне известно, что koi8-r и cp1251 перекодируются друг в друга простой перестановкой (пример с бНОПНЯ - тому подтверждение) и цикл в 20 последовательных одинаковых перекодировок даст исходный текст.
Поэтому неудивительно, что текст в koi8-r может в каких-то случаях идентифицироваться как cp1251 и наоборот.
Однако, если взять другой участок текста, то можно увидеть, что символ, заменяющий твердый знак, при перекодировке остается без изменений.
Spoiler
Shell
curl http://lib.ru/CTOTOR/KNUT/004-033.tex | head -51 | tail -8
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Îåô îõöäù çï÷ïòéôø ï ÷áöîïóôé óáíïê ïâìáóôé. Ðòáëôéþåóëé óïòôéòï÷ëá é ðïéóë ÷ ôïê
éìé éîïê íåòå ðòéóõôóô÷õàô ÷ï ÷óåè ðòéìïöåîéñè; ÷ þáóôîïóôé, ðòé ïâòáâïôëå âïìøûéè
ïâRåíï÷ äáîîùè üææåëôé÷îïóôø éíåîîï üôéè ïðåòáãéê ïðòåäåìñåô üææåëôé÷îïóôø, á éîïçäá é
òáâïôïóðïóïâîïóôø ÷óåê óéóôåíù. Ðïüôïíõ, ëáë óðòá÷åäìé÷ï ïôíåþáåô á÷ôïò, ëîéçá
áäòåóï÷áîá îå ôïìøëï óéóôåíîùí ðòïçòáííéóôáí, úáîéíáàýéíóñ òáúòáâïôëïê ðòïçòáíí
óïòôéòï÷ëé é ðïéóëá éîæïòíáãéé. Íïöîï óëáúáôø, þôï äïóôáôïþîï þåôëéå ðòåäóôá÷ìåîéñ ïâ
üôïê ïâìáóôé îõöîù ðòé òåûåîéé ìàâïê úáäáþé îá Ü×Í ëáë ïâñúáôåìøîùå üìåíåîôù
éóëõóóô÷á ðòïçòáííéòï÷áîéñ.
100 6998 0 6998 0 0 82329 0 --:--:-- --:--:-- --:--:-- 82329
curl: (23) Failed writing body (1194 != 1440)
Shell
curl http://lib.ru/CTOTOR/KNUT/004-033.tex | iconv -f cp1251 | head -51 | tail -8
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 66834 0 66834 0 0 462k 0 --:--:-- --:--:-- --:--:-- 462k
Оеф охцдщ зпчптйфш п чбцопуфй убнпк пвмбуфй. Ртблфйюеулй уптфйтпчлб й рпйул ч фпк
ймй йопк нете ртйухфуфчхаф чп чуеи ртймпцеойси; ч юбуфопуфй, ртй пвтбвпфле впмшыйи
пвRенпч дбоощи ьжжелфйчопуфш йнеооп ьфйи претбгйк пртедемсеф ьжжелфйчопуфш, б йопздб й
тбвпфпурпупвопуфш чуек уйуфенщ. Рпьфпнх, лбл уртбчедмйчп пфнеюбеф бчфпт, лойзб
бдтеупчбоб ое фпмшлп уйуфенощн ртпзтбннйуфбн, ъбойнбаэйнус тбътбвпфлпк ртпзтбнн
уптфйтпчлй й рпйулб йожптнбгйй. Нпцоп улбъбфш, юфп дпуфбфпюоп юефлйе ртедуфбчмеойс пв
ьфпк пвмбуфй охцощ ртй теыеойй мавпк ъбдбюй об ЬЧН лбл пвсъбфемшоще ьменеофщ
йулхууфчб ртпзтбннйтпчбойс.
Shell
curl http://lib.ru/CTOTOR/KNUT/004-033.tex | iconv -f koi8-r | head -51 | tail -8
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 66834 0 66834 0 0 553k 0 --:--:-- --:--:-- --:--:-- 548k
нЕТ НУЖДЫ ГОВОРИТЬ О ВАЖНОСТИ САМОЙ ОБЛАСТИ. пРАКТИЧЕСКИ СОРТИРОВКА И ПОИСК В ТОЙ
ИЛИ ИНОЙ МЕРЕ ПРИСУТСТВУЮТ ВО ВСЕХ ПРИЛОЖЕНИЯХ; В ЧАСТНОСТИ, ПРИ ОБРАБОТКЕ БОЛЬШИХ
ОБRЕМОВ ДАННЫХ ЭФФЕКТИВНОСТЬ ИМЕННО ЭТИХ ОПЕРАЦИЙ ОПРЕДЕЛЯЕТ ЭФФЕКТИВНОСТЬ, А ИНОГДА И
РАБОТОСПОСОБНОСТЬ ВСЕЙ СИСТЕМЫ. пОЭТОМУ, КАК СПРАВЕДЛИВО ОТМЕЧАЕТ АВТОР, КНИГА
АДРЕСОВАНА НЕ ТОЛЬКО СИСТЕМНЫМ ПРОГРАММИСТАМ, ЗАНИМАЮЩИМСЯ РАЗРАБОТКОЙ ПРОГРАММ
СОРТИРОВКИ И ПОИСКА ИНФОРМАЦИИ. мОЖНО СКАЗАТЬ, ЧТО ДОСТАТОЧНО ЧЕТКИЕ ПРЕДСТАВЛЕНИЯ ОБ
ЭТОЙ ОБЛАСТИ НУЖНЫ ПРИ РЕШЕНИИ ЛЮБОЙ ЗАДАЧИ НА эвм КАК ОБЯЗАТЕЛЬНЫЕ ЭЛЕМЕНТЫ
ИСКУССТВА ПРОГРАММИРОВАНИЯ.
Разумеется, я понимаю, что не всякую цепочку перекодировок можно "вертать назад", но я думал, а вдруг в данном случае есть ответ.
Когда-то раньше в Сети мне попадался похожий вопрос на каком-то форуме, и там человек отвечал, что определяет уже "на глаз" и объяснял примерную логику как ему удаётся восстановить цепочку. Только вот найти теперь не могу.
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Странная кодировка текста
enca так не обмануть: она ищет часто встречающиеся сочетания символов, а не просто отдельные символы. Регистр при этом, скорее всего, не учитывает.Hephaestus писал: ↑02.10.2018 20:29Опять же, мне известно, что koi8-r и cp1251 перекодируются друг в друга простой перестановкой (пример с бНОПНЯ - тому подтверждение) и цикл в 20 последовательных одинаковых перекодировок даст исходный текст.
Поэтому неудивительно, что текст в koi8-r может в каких-то случаях идентифицироваться как cp1251 и наоборот.
Раньше была статья википедия://кракозябры с примерами неправильного перекодирования, но потом нехорошие люди её удалили.Hephaestus писал: ↑02.10.2018 20:29Когда-то раньше в Сети мне попадался похожий вопрос на каком-то форуме, и там человек отвечал, что определяет уже "на глаз" и объяснял примерную логику как ему удаётся восстановить цепочку.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Странная кодировка текста
Это просто у оригинального текста в KOI8-R восьмой бит обрезали (или сознательно сконвертировали в ASCII/KOI-7), а потом либо просто транслитерировали, либо попробовали восстановить восьмибитную KOI8-R.
P.S.: собственно, по отсутствию твердого знака можно понять.
P.S.: собственно, по отсутствию твердого знака можно понять.
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Странная кодировка текста
Да, это похоже на правду. Непонятно только, как удалось латинские символы превратить обратно в кириллицу, не затронув TeX-разметку.
Re: Странная кодировка текста
Посмотрел текст. Решил попробовать преобразовать его командой iconv -f KOI-8
Программа "заткнулась: недопустимая входная последовательность в позиции 52581
Там оказалась буква ё. Причём строчная.
В предложении
оБРАТНУЮ ПЕРЕСТАНОВКУ ВПЕРВЫЕ ВВёЛ X. а. рОТЕ [В к.F.~Hindenburg(ed.).,
Удивило сочетание: "к.F" -- русская и латинская буквы. Также буква X в этом предложении латинская (Генрих Август Роте?)
Может быть текст был написано в ChiWriter'е? А потом русские буквы преобразовали в КОИ-8, добавив старший бит, но не учли, что в КОИ-7 строчные латинские буквы соответствуют заглавным русским и наоборот.
Кстати, интересный момент: mc нормально понимает буквы ё и Ё (коды 0xA3 и 0xB3) в кодировке КОИ-8. А вот iconv их почему-то не воспринимает.
С чем это может быть связано? Можно ли это исправить?
Программа "заткнулась: недопустимая входная последовательность в позиции 52581
Там оказалась буква ё. Причём строчная.
В предложении
оБРАТНУЮ ПЕРЕСТАНОВКУ ВПЕРВЫЕ ВВёЛ X. а. рОТЕ [В к.F.~Hindenburg(ed.).,
Удивило сочетание: "к.F" -- русская и латинская буквы. Также буква X в этом предложении латинская (Генрих Август Роте?)
Может быть текст был написано в ChiWriter'е? А потом русские буквы преобразовали в КОИ-8, добавив старший бит, но не учли, что в КОИ-7 строчные латинские буквы соответствуют заглавным русским и наоборот.
Кстати, интересный момент: mc нормально понимает буквы ё и Ё (коды 0xA3 и 0xB3) в кодировке КОИ-8. А вот iconv их почему-то не воспринимает.
С чем это может быть связано? Можно ли это исправить?
- /dev/random
- Администратор
- Сообщения: 5289
- ОС: Gentoo
Re: Странная кодировка текста
KOI-8 и KOI8-R - это разные кодировки. В последней есть Ё, в первой - нет.