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

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



On Tuesday 18 July 2006 15:39, Dmitry E. Oboukhov wrote:

> > Не надо. Это регулярное выражение есть внутри самого WordDecoder. Вы ему
> > просто спихиваете все заголовки, которые есть в письме, не разбираясь,
> > что там в них, а WordDecoder вернет уже плейнтекст в нужной вам
> > кодировке.
>
> а зачем же тогда писать отдельные функции на utf и cp1251 как было в
> примере выше?

Потому что, чтобы он вернул в нужной кодировке, я не нашел лучшего способа, 
как перечислить возможные исходные кодировки и методы их перекодирования. Я 
подчеркиваю, что просто не разбирался и не искал более универсального 
способа.

>
> > > идеально бы было конечно чтобы в случае с $parser->decode_headers(1);
> > > хидеры возвращались бы приведенные к utf-8 (или к локали)
> > > но это патчить надо MIME-tools
> >
> > С WordDecoder'ом - это один цикл.
>
> что-то я не въеду
> читаю описалово на этот MIME-декодер и не въезжаю
> туплю чтоли?
>
> можно пример раскодирования хидера в _произвольной_ кодировке с
> возвратом utf-8 строки?

Передо мной такой задачи не стояло :) Мне нужно было только русские кодировки 
обработать и перегнать строчки из заголовков в KOI8-R. Возможно, чтобы решить 
вашу задачу, придется патчить WordDecoder. Но это определенно проще, чем 
заново его писать.

>
> > > а костыль расчитанный только на пару русских кодировок получается
> > > хреновым, ибо как только появится третья русская кодировка в хидере или
> > > четвертая нерусская и кранты :(
> > > все таблицы не напишешь в виде функций
> >
> > Покопайтесь в кишках WordDecoder. Может там есть возможность обрабатывать
> > кодировки не по табличке, а прямо передавать в Text::Iconv, чтобы он на
> > выходе уже UTF-8 делал.
>
> ну вот я так примерно и написал:
> 1. определяю кодировку из регвыражения выше
> 2. раскодирую B или Q в plain-text
> 3. делаю iconv раскодированного в utf
> 4. делаю замену регвыражения в полученное из п.3
> 5. если регвыражение все еще есть, то п.1 иначе конец

И это правильно. Так, в общем случае, и надо делать. Чем же вам это решение не 
понравилось?

> > PS. Теперь у меня еще вопрос. Про Text::Iconv. Есть ли в нем возможность,
> > чтобы при обнаружении символов, отсутствующих в целевой кодировке, он
> > пропускал эти символы (или заменял их на вопросик какой-нибудь)? У
> > iconv(1) такая опция есть (omit invalid characters), а вот Text::Iconv
> > сразу при этом спотыкается и возвращает undef.
>
> Text::Iconv->raise_error(0);
> разве не так делает? или оно просто скипает?

raise_error(1) делает die, raise_error(0) возвращает undef

> ща попробую

-- 
Best regards. Alexander Lourier. http://aml.rulezz.ru

Attachment: pgpZbkvuTvLBg.pgp
Description: PGP signature


Reply to: