|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Victor Wagner 2:5020/400 07 Apr 2002 11:19:45 To : Dmitri Minaev Subject : Re: Image::Magic или как писать по русски? -------------------------------------------------------------------------------- Dmitri Minaev <dmin@mail.radiant.ru> wrote: >>>>>> Hello, Nurlan Mukhanov NM>> use Text::Iconv; my $converter = NM>> Text::Iconv->new("koi8-r", "Unicode"); my $text = NM>> $converter->convert("Привет"); NM>> не помогает. UTF-7, UTF-8 тоже... DM> Hет, не так. Прошу прощения у знатоков и ценителей за DM> уродский код, но сама идея вот такая: Совет (чтобы сделать код менее уродским) 1. Качаешь с ftp.unicode.org табличку для твоей любимой кодировки 2. Читаешь ее (там два столбца - код в твоей кодировке и код в unicode) в хэшик, ключик которого символ, а значение уже готовая escape-последовательность. что-то типа while (<CODETABLE>) { next if /^#/; my ($code,$unicode) = split; $recoder{chr(hex($code)}="\0x$unicode"} } 3. выполняешь подстановку одной командой s/([\200-\377])/$recoder{$1}/g; Да, естественно, удаление \r и раскрытие табуляций никто не отменял. Большим плюсом данного варианта является то, что для смены входной кодировки нужно только выкачать с ftp.unicode.org другой файлик. Можно, конечно, прикрутить модуль Unicode::Map8 или Text::Iconv, но оба варианта имеют ограничения на применимость - первый таскает все таблицы кодировки с собой, и сделать новую, конечно, можно, но сложнее чем в формате unicode.org. Второй пользуется системной процедурой Iconv, а я что-то еще не видел систему где она не глючит. -- Максимальным чувством юмора обладают умершие: они смеются надо всем. --- С.Е. Лец --- ifmail v.2.15dev5 * Origin: Free Net of Leninsky,45 (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1517829b92ac2.html, оценка из 5, голосов 10
|