Re: добавим офтопега
> Не надо. Это регулярное выражение есть внутри самого WordDecoder. Вы ему
> просто спихиваете все заголовки, которые есть в письме, не разбираясь, что
> там в них, а WordDecoder вернет уже плейнтекст в нужной вам кодировке.
а зачем же тогда писать отдельные функции на utf и cp1251 как было в
примере выше?
>
> > идеально бы было конечно чтобы в случае с $parser->decode_headers(1);
> > хидеры возвращались бы приведенные к utf-8 (или к локали)
> > но это патчить надо MIME-tools
>
> С WordDecoder'ом - это один цикл.
что-то я не въеду
читаю описалово на этот MIME-декодер и не въезжаю
туплю чтоли?
можно пример раскодирования хидера в _произвольной_ кодировке с
возвратом utf-8 строки?
> > а костыль расчитанный только на пару русских кодировок получается
> > хреновым, ибо как только появится третья русская кодировка в хидере или
> > четвертая нерусская и кранты :(
> > все таблицы не напишешь в виде функций
>
> Покопайтесь в кишках 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);
разве не так делает? или оно просто скипает?
ща попробую
Reply to: