Отправляет email-рассылки с помощью сервиса Sendsay

convmv - поиск исходной кодировки

Здоров, коллеги!

Тут у меня такая беда вышла:

Позавчера сдох XP на компе начальницы, от того, что каталог \tmp на чтение,
расшарил, вследствии чего посыпались dll-ки в windows\system32 :) (блин
связь типа: ударил по яйцам - шнурки развязались, вобщем в стиле винды)

Вот. Этот XP ставили до меня несколько недальновидные люди, т.е. влепили там
NTFS раздел на весь винт.
Благодаря смерти виндовса я "под шумок" урезал NTFS раздел, на
освободившемся месте создал раздел с FAT32, потом под кноппиксом перелил туда
все файлы с NTFS, после этого его грохнул и развернул месте NTFS-раздела -
Gentoo, а на месте FAT32 - XP (начальнице Corel нужон).

При монтировании NTFS была учтена опция nls=utf8
При монтировании FAT32 были учтены опции codepage=866,iocharset=koi8-r (в
кноппиксе, загруженном с параметром lang=ru команда locale выдавала
ru_RU.KOI8-R)

А вот после перезагрузки произошёл некоторый конфуз: при монтировании этого
FAT32 раздела в свежеустановленном Gentoo с опциями
codepage=866,iocharset=utf8 (у меня вся система работает на юникоде. Юникод
настроен) мне выдаются каракули вместо русских названий файлов. В то-же время
русские названия файлов, которые создала винда в процессе своей установки
вполне нормальны (Например - тот хлам, что она создаёт в Documents &
Settings).

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

Может кто подскажет кодировку нужную, или на какой-нить "умный" конвертор
покажет.

вобщем, прилагаю скриншот того, как это выглядит в винде (в Linux у меня все
рус. названия знаками вопроса забиты). Может кто и "на глаз" определит
кодировку

http://img172.imageshack.us/img172/1076/screentz9.png

Дело очень важное!
Всем откликнувшимся - спасибо заранее! :)

Ответить   NETZMB Fri, 31 Aug 2007 13:13:11 +0300 (#688577)

 

Ответы:

В сообщении от 31 августа 2007 13:13 NETZMB написал(a):

Очень похоже на iso8859-1 или еще какой-нибудь из вариантов us-ascii
подобных, которые не поддерживают русский язык.

Что получится если сделать в этом каталоге такое:
ls | iconv -t iso8859-1 | iconv -f koi8-r

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32465; Возраст листа: 1498; Участников: 1455
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/688611

Ответить   Fri, 31 Aug 2007 15:12:39 +0300 (#688611)

 

п'ятниця, 31-сер-2007, Amper написав:

iconv: illegal input sequence at position 230

Ответить   NETZMB Mon, 3 Sep 2007 12:03:59 +0300 (#689105)

 

On Mon, 3 Sep 2007 12:03:59 +0300
NETZMB <botulizm***@r*****.ru> wrote:

похоже что 230 сивол в в исходной строке отсутствует в кодировке
iso8859-1.

% ls | iconv -с -t iso8859-1 | iconv -f koi8-r

-c опускать отсутствующие в таблице знаки

-

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32500; Возраст листа: 1502; Участников: 1447
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/689263

Ответить   Poltawer Kozak Tue, 4 Sep 2007 13:11:30 +0000 (#689263)

 

В сообщении от 3 сентября 2007 NETZMB написал(a):

ls --literal
иначе он имена файлов может и исказить.
Если ошибка повторится - вы исходную кодировку не угадали.

Ответить   "Sergey B. Khvatov" Tue, 4 Sep 2007 11:38:04 +0400 (#689275)

 

Hello.

Попробуйте enca -- это спец. утилита для угадывания кодировки по тексту.
Примерно так:

ls | enca

On Fri, 31 Aug 2007 13:13:11 +0300
NETZMB <botulizm***@r*****.ru> wrote about "convmv - поиск исходной кодировки":

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32473; Возраст листа: 1499; Участников: 1455
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/688731

Ответить   Fri, 31 Aug 2007 23:50:01 +0400 (#688731)

 

On Fri, 31 Aug 2007 13:13:11 +0300
NETZMB <botulizm***@r*****.ru> wrote:

Еще пришла мисль может у тебя кернел Gentoo не знает, что fs может бить
cp866 и нужно подгрузить нужний модуль.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32488; Возраст листа: 1500; Участников: 1450
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/688961

Ответить   Poltawer Kozak Sun, 2 Sep 2007 14:41:32 +0000 (#688961)

 

недiля, 02-вер-2007, Poltawer Kozak написав:

Не, эта NLS тоже вкомпилирована в ядро. Ядро монолитное.
Gentoo-2.6.22-gentoo-r2

Ответить   NETZMB Mon, 3 Sep 2007 12:10:40 +0300 (#689104)

 

п'ятниця, 31-сер-2007, NETZMB написав:

За дельные советы - всем отписавшимся отдельное спасибо! :)

Вобщем так: после долгих мучений возник абсолютно непостижимый феномен - если
сделать приблизительно вот такой скрипт:

for i in *
do echo $i | iconv -f utf8 -t iso8859-1 >> dir.html
done

а потом получившийся после скрипта файл dir.html просмотреть в браузере с
кодировкой koi8-r, всё прекрасно читается, хотя-б так - уже хорошо. Но совсем
непонятно другое: если в скрипте сразу попытаться перевести строку в utf8, то
этот трюк нифига не получается:

for i in *
do echo $i | iconv -f utf8 -t iso8859-1 | iconv -f koi8-r >> dir.html
done

iconv: illegal input sequence at position бла-бла
iconv: illegal input sequence at position бла-бла
iconv: illegal input sequence at position бла-бла
iconv: illegal input sequence at position бла-бла

Я пробовал комбинировать всевозможные комбинации кодировок - iconv без глюков
переводит только в iso8859-1

Вобщем - я просто в ступоре от этого колдовства, ужас просто! Может кто знает
заклинание от этого наваждения?

PS: Я позволил себе задержаться с решением этой проблемы, т.к. начальство на
время свалило в Киев (к сожалению - до понедельника). Это чтобы никто не
подумал, что я написал, что проблема срочная, а потом забил на неё :).

Ответить   NETZMB Thu, 6 Sep 2007 10:53:16 +0300 (#689467)

 

On 9/6/07, NETZMB <botulizm***@r*****.ru> wrote:

Только надо бы его половчее к письму приделать - запаковать, что ли? И,
естественно, на личную почту, в рассылку не пролезет. Уж больно любопытство
меня съедает, что же там такое?

Ответить   Thu, 6 Sep 2007 15:24:25 +0400 (#689484)

 

On Thu, 6 Sep 2007 10:53:16 +0300
NETZMB <botulizm***@r*****.ru> wrote:

utf8 имеет знаки каких нет в koi8-r и уже говорили Вам чтобы
игнорировать ети знаки нужно дать или опсию -с в iconv или
использовать ls -literal если в названии файла встречаются управляющие
символы

Из этого всего видно что mount монтирует вашу систему из кодировкой
cp866 правильно а дальше iocharset не работает i выдаёт в дефоултовой
таблице iso8859-1
Лучше вышлите строку моунт, может там ктото чтото поправит. или нужно
доставить fat=32 или убрать вообще iocharset

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32508; Возраст листа: 1504; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/689512

Ответить   Poltawer Kozak Thu, 6 Sep 2007 20:03:29 +0000 (#689512)

 

NETZMB пишет:

а в консоли как выглядит это?

строку монтирования на всяк случай можно? вдруг ошибка где

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32512; Возраст листа: 1505; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/689622

Ответить   Wed, 05 Sep 2007 16:32:11 +0400 (#689622)

 

п'ятниця, 31-сер-2007, NETZMB написав:

Решилось!

Всё оказалось просто до безобразия! :'(
Именно на этом компе я решил подправить /etc/locales.gen, время компиляции
glibc'ов сэкономить, блин. Соответственно, при сборке glibc собрались только
указанные там локали ru_RU.UTF-8, en_GB.UTF-8 и ещё парочка не помню, каких.
Вобщем, всё преспокойно собралось, все остальные проги, зависящие от glibc
собиралось даже без "ворнингов" и прочего, что должно было бы меня
насторожить. А т.к. сборка системы с нуля - процесс длительный, то я
благополучно забыл об этом злощастном /etc/locales.gen.

В итоге каким-то непонятным образом я заметил глюк с "питоном", который
говорил чё-то о моей тек. локали, и что он:
falling back to "C" locale
при этом преспокойно продолжая собираться.

тут я вспомнил об /etc/locales.gen, выкинул его нафиг, пересобрал glibc, и
вуаля! Мой скрипт переименования стал прекрасно работать. Потом я его воткнул
в опцию -exec в find и прогнал по всему покорёженному каталогу :)

PS: Самое обидное - что пришлось столько повозиться просто из-за того, что
iconv молчал, как партизан и не говорил, сволочь, что запрошенных мной
локалей у него нет. Делал вид, что скармливаемые ему кодировки несовместимы
между собой. Вобщем - одно заблуждение от него :(. Хорошо, что хоть питону
какая-то локаль левая понадобилась, а то-б и я и не вспомнил про этот
чёртов /etc/locales.gen.

Итог -> удалить /etc/locales.gen, пересобрать glibc

Ответить   NETZMB Fri, 7 Sep 2007 12:57:27 +0300 (#689732)