[Sysadmins] CP1251 и фильтры в procmail
Afanasov Dmitry
AfanasovDmitry на gmail.com
Чт Май 21 09:47:15 MSD 2009
On Thu, May 21, 2009 at 12:06:21AM +0400, Михаил Шувалов wrote:
> В Срд, 20/05/2009 в 10:33 +0400, Afanasov Dmitry пишет:
> > On Wed, May 20, 2009 at 02:04:58AM +0400, Михаил Шувалов wrote:
> > > и как посоветуете перекодировать имена файлов из 1251 в юникод? (про
> > > гугл я знаю :) )
> > сначала надо перекодировать из mime'ового бреда (uuencode ли quoted
> > printable) в нормальную кодировку> >
> Это все, как я понял относится к _содержимому_ файла. Здесь все
> нормально. Нужно перекодировать именно _имя_ файла.
неа, не только :) вчера поразвлекался, вспомнил:
например возмем крякозябру
Subject: Re: [room] =?koi8-r?b?89fR3cXOzsnLINrBzsnNwcXU09Eg0M/E09TSxcvB1MXM?= =?koi8-r?b?2NPU18/NIMsg0MnSwdTT1NfV?=
классическая 7bit'ная кодировка, в которой и имена файлов кодируются в
mime-аттачах.
формат этого бреда следующий:
=?charset?encoding?encoded-text?=
=? и ?= : органичители
encoding: b - base64, q - quoted printable, uuencode вроде не встречался.
на перле таким занимается модулек MIME::Words
хха, я тут набаловался, в аттаче скриптинка, что этот бред, взятый из
stdin'а, переводит и выводит на stdout :) требует perl-MIME-tools
--
С уважением
Афанасов Дмитрий
----------- следующая часть -----------
#!/usr/bin/perl -w
use MIME::Words qw/decode_mimewords/;
use Text::Iconv;
use I18N::Langinfo qw(langinfo CODESET);
my $localcharset = langinfo(CODESET());
while(<>)
{
my @text;
foreach $pair (decode_mimewords($_))
{
my ($text, $charset) = @$pair;
unless($charset)
{
push @text, $text;
next;
}
my $converter = Text::Iconv->new($charset, $localcharset);
push @text, $converter->convert($text);
}
print @text;
}
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 198 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/sysadmins/attachments/20090521/a73027ea/attachment-0001.bin>
Подробная информация о списке рассылки Sysadmins