Re[2]: исправление заголовков

Denis F. Latypoff denis на gostats.ru
Чт Ноя 26 15:53:06 MSK 2009


Hello Maxim,

Thursday, November 26, 2009, 6:11:51 PM, you wrote:

> Hello!

> On Thu, Nov 26, 2009 at 05:33:05PM +0600, Denis F. Latypoff wrote:

>> Hello Maxim,
>> 
>> Thursday, November 26, 2009, 5:21:01 PM, you wrote:
>> 
>> > Hello!
>> 
>> > On Thu, Nov 26, 2009 at 04:55:38PM +0600, Denis F. Latypoff wrote:
>> 
>> >> Hello Igor,
>> >> 
>> >> Thursday, November 26, 2009, 4:43:29 PM, you 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));
>> >> +     return encode('MIME-Header', encode('UTF-8', decode('MIME-Header', $hdr)));
>> 
>> > Это не поможет ему производить mime-слова допустимой длины, увы.
>> 
>> Это как?

> Это RFC 2047, "2. Syntax of encoded-words":

> ...

>    An 'encoded-word' may not be more than 75 characters long, including
>    'charset', 'encoding', 'encoded-text', and delimiters.  If it is
>    desirable to encode more text than will fit in an 'encoded-word' of
>    75 characters, multiple 'encoded-word's (separated by CRLF SPACE) may
>    be used.

> ...

> Кроме того, есть ещё RFC 5322, "2.1.1.  Line Length Limits":

>    There are two limits that this specification places on the number of
>    characters in a line.  Each line of characters MUST be no more than
>    998 characters, and SHOULD be no more than 78 characters, excluding
>    the CRLF.

> Т.е. 75 символов на encoded-word - это больше, чем рекомендуется 
> использовать в первой строке (ибо вместе с названием заголовка - 
> вылезет за 78 символов).  Но это уже красивости по большому счёту, 
> а вот превышать лимит в 75 символов на encoded-word - чревато 
> боком (e.g. pine такие encoded-words просто не раскодирует).

Ааа, ясно, тогда encode('MIME-Header', /* сюда надо скармливать
                                          юникодную строку, чтобы perl
                                          правильно резал по символам,
                                          а не по байтам */);

'MIME-B' и 'MIME-Q' вопросик тоже не отделяют.

Получается, в Encode бага?

> Maxim Dounin

-- 
Best regards,
 Denis                            mailto:denis at gostats.ru




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