[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: добавим офтопега



> my $wd = MIME::WordDecoder->new([
>         'US-ASCII' => sub { $_[0] },
>         'KOI8-R' => sub { $_[0] },
>         'WINDOWS-1251' => \&fromwin,
>         'CP1251' => \&fromwin,
>         'UTF8' => \&fromutf8,
>         'UTF-8' => \&fromutf8,
>         '*' => sub { $_[0] },
> ]);

порывшись нашел таки нужный модуль и вот что получилось:

use Encode;
use MIME::Words;

sub decode_header($$)
{ 
  my ($header, $charset)=@_;
  
  return unless defined $header;
  $charset='utf-8' unless defined $charset;
  
  my @hdrs=MIME::Words::decode_mimewords($header);
  
  $header='';
  
  for (@hdrs)
  { 
    if (defined $$_[1])
    { 
      $header.=decode($$_[1], $$_[0], Encode::FB_WARN);
    }
    else
    { 
      $header.=$$_[0];
    }
  }
  
  return encode($charset, $header, Encode::FB_WARN);
}

в принципе тот же алгоритм, что выше описан, но с завязкой на
стандартные либы :)



Reply to: