исправление заголовков

Igor Sysoev igor на sysoev.ru
Чт Ноя 26 16:12:07 MSK 2009


On Thu, Nov 26, 2009 at 04:00:10PM +0300, Maxim Dounin wrote:

> Hello!
> 
> On Thu, Nov 26, 2009 at 02:34:06PM +0300, Igor Sysoev wrote:
> 
> > On Thu, Nov 26, 2009 at 02:01:56PM +0300, Maxim Dounin wrote:
> > 
> > > Hello!
> > > 
> > > On Thu, Nov 26, 2009 at 01:43:29PM +0300, Igor Sysoev wrote:
> > > 
> > > > Может кто-нибудь подсказать, что из перлового многообразия модулей
> > > > умеет корректно преобразовывать заголовки ?
> > > > 
> > > > Вот это:
> > > > 
> > > > # $Id: Encode.pm,v 2.35 2009/07/13 00:49:38 dankogai Exp $
> > > > use Encode qw/encode decode/;
> > > > 
> > > > sub repack_utf_hdr($) {
> > > >     my($hdr) = shift;
> > > > 
> > > >     return encode('MIME-Header', decode('MIME-Header', $hdr));
> > > > }
> > > > 
> > > > Делает из такого
> > > > 
> > > > Subject: Re: =?KOI8-R?Q?=ED=CF=D6=CE=CF_=CC=C9_=CB=C1=CB-=D4=CF_=D5?=
> > > >         =?KOI8-R?Q?=D0=D2=CF=D3=D4=C9=D4=D8_=C4=C1=CE=CE=D5=C0_=CB=CF=CE=C6=C9?=
> > > >         =?KOI8-R?Q?=C7=D5=D2=C1=C3=C9=C0=3F?=
> > > > 
> > > > вот такое:
> > > > 
> > > > Subject: Re:
> > > >         =?UTF-8?B?INCc0L7QttC90L4g0LvQuCDQutCw0Lot0YLQviDRg9C/0YDQvtGB0YLQuNGC0Y
> > > > w=?=
> > > >         =?UTF-8?B?INC00LDQvdC90YPRjiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y4=?=?
> > > > 
> > > > В конце вопрос не отделён пробелом (а ещё лучше засунуть его в закодированое).
> > > > Результат можно наблюдать здесь:
> > > > http://nginx.org/pipermail/nginx-ru/2009-November/030058.html
> > > 
> > > MIME::EncWords пожалуй наиболее приличен из всего что есть на 
> > > текущий момент.
> > 
> > А готовый скрипт может кто-нибудь дать, а то там даже в man'е ошибки:
> > 
> >         foreach (decode_mimewords($enc)) {
> > -           print "", ($_[1] || 'US-ASCII'), ": ", $_[0], "\n";
> > +           print "", ($_->[1] || 'US-ASCII'), ": ", $_->[0], "\n";
> >         }
> 
> Если я правильно понимаю чего ты хочешь добиться - то как-то так:
> 
>         return encode_mimewords(
>                 scalar decode_mimewords($hdr, Charset => 'utf-8'),
>                 Charset => 'utf-8'
>         );

Спасибо, похоже, это то, что надо.


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru