[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