[sisyphus] Баг в Sylpheed с пробелами в Subject: вторая серия

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_mivlgu=2Emurom=2Eru?=
Пн Мар 12 18:39:02 MSK 2001


On Mon, 12 Mar 2001 10:31:53 +0300
rider <rider на linux.ru.net> wrote:

> Sergey Vlasov wrote:
> 
> > On Mon, 12 Mar 2001 07:20:59 +0300
> > aen <aen на logic.ru> wrote:
> >
> > > Sergey Vlasov wrote:
> > >
> > > > On Mon, 12 Mar 2001 07:00:44 +0300
> > > > aen <aen на logic.ru> wrote:
> > > >
> > > > > Sergey Vlasov wrote:
> > > > >
> > > > > > Обнаружилось, что sylpheed-0.4.62-ipl0.6 теряет пробелы в поле
> > > > > Subject, если два русских слова идут подряд. После пятиминутного
> > > > > изучения исходника родился прилагаемый патч. Вроде бы помогает (по
> > > > > крайней мере в этом сообщении subject нормальный :-).
> > > > > >
> > > > > >
> > > > >
> > > ------------------------------------------------------------------------
> > > > > >                                       Name:
> > > > > sylpheed-0.4.61-encodehdr.patch
> > > > > >    sylpheed-0.4.61-encodehdr.patch    Type: Plain Text
> > > (text/plain)
> > > > > >                                   Encoding: base64
> > > > >
> > > > > Спасибо!
> > > > >
> > > > > Rgrds, AEN
> > > >
> > > > Кстати, вот в этом сообщении пропал пробел после "с". Это ваш Mozilla
> > > 4.76 [ru] (X11; U; Linux 2.2.18-ipl3mdk i686) так себя повел при отсылке
> > > ответа или у меня все-таки закодировалось не совсем правильно? Т.е. мое
> > > первое сообщение у вас со всеми пробелами? (Это я тоже поправил.)
> > > >
> > >
> > > Сейчас посмотрел -- нет, в полученном мною первом сообщении после "с"
> > > пробела нет.
> >
> > Тогда получается следующая ситуация. Заголовок Subject от меня ушел такой:
> >
> > Subject: =?KOI8-R?B?99nMz9fMxc4gySDVwsnUIMLBxyDX?= Sylpheed =?KOI8-R?B?0w==?=
> >  =?KOI8-R?B?INDSz8LFzMHNySDX?= Subject
> >
> > Т.е. порезанный на две строки (как положено). Причем куски такие: "Выловлен и убит баг в", "с", " пробелами в". Т.е. третий кусок (после переноса на следующую строку) начинается с закодированного пробела, который, похоже, и пропал. А вот у меня он там отображается.
> >
> > Кстати, в следующем моем сообщении произошло то же самое, только строка перенеслась перед "в", и опять же в начале был пробел. А после "в", наооборот, добавился лишний. В ответе от вас:
> >
> > Subject: Re: [sisyphus] Re: [sisyphus] $
> >         =?koi8-r?Q?=F7=D9=CC=CF=D7=CC=C5=CE=20=C9=20=D5=C2=C9=D4=20=C2=C1=C7=D7?= $
> >         Sylpheed =?koi8-r?Q?=D3=20=D0=D2=CF=C2=C5=CC=C1=CD=C9=20=D7?= Subject$
> >
> > ("$" добавлены в конце для показа пробелов). Т.е. стоит пробел в конце строки и табуляция в начале. Sylpheed при декодировании вставляет после [sisyphus] и перед Sylpheed два пробела подряд.
> >
> > Похоже, придется читать RFC и разбираться, где куда должны деваться пробелы. По крайней мере, теперь они пропадают реже, но все равно неприятно. Как бы не пришлось всю функцию переписывать :-(
> >
> 
> А почему бы не закодировать в MIME вместе с пробелами? ;-)

Так именно с пробелами и закодировано, как положено. Похоже, проблема в том, что Sylpheed при разбивке строки на куски согласно ограничениям RFC 1522/2047 помещает пробел не в конце куска, а в начале следующего (пробел, естественно, закодирован в base64), а Netscape такой пробел ухитряется выбросить. В RFC 2047 в явном виде не прописано, в какую часть нужно класть такой пробел, но в одном примере (правда, не для Subject) кодировка именно такая (без продолжения на следующей строке):

(=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)    (a b)

Я бы сказал, что в данном случае Netscape неправ, но куда от него денешься :-(




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