|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Sergey Skvortsov 2:5020/400 30 Sep 2003 15:30:28 To : Alexey Mahotkin Subject : Re: Malformed UTF-8 character -------------------------------------------------------------------------------- AK>> Флажок появляется (FLAGS = (PADBUSY,PADMY,POK,pPOK,UTF8)). Ошибка, AK>> соотвественно, исчезает. Осталось разобраться, с какой стати она AK>> возникала, почему на win32 все работает изначально правильно и без AK>> decode, и как добиться такого же на фре. Системные настройки ? Где AK>> копать ? AM> Скорее всего, под виндами какой-нибудь файловый дескриптор автоматически из AM> системы получает нужную кодировку и всё приходит в UTF8-скаляр. AM> У меня есть подозрение, что как раз проблема с виндами в каком-то смысле. AM> Почему тот код, кто выкачивает HTML-страницу, считает себя вправе включать AM> какую-либо кодировку при скачивания? никакой проблемы с виндами нет. какой-то участок кода хочет видеть переменную $var как utf8. соответственно perl вызывает SvPVutf8. поскольку у $var нет флага SVf_UTF8, то он вызывает внутренную функцию decode от того же Encode. а последняя оперирует, вы не поверите, танцуя от locale. которая либо системная, либо установлена через use locale. как уже все догадались, под виндами (c руссификацией :) locale именно windows-1251. и decode проходит на ура. под FreeBSD людей, ставящих этот locale я вживую не видел. потому неудивительно, что, скажем, перекодировка из строки с кодировкой 1251 по правилам koi8 вызывает exception. что делать? например, указывать в заголовке get'а "Accept-Language: utf8", чтобы сервер отвечал сразу в utf8. (ну и не забыть про use utf8 и все такое). или наоборот - анализировать "Content-Type" и перекодировать из него. единственное что непонятно - в каком месте HTML::TreeBuilder'у (и его deletagor'ам) требуется именно utf8? по идее он пофигистично относится к символам >=0x80 - разве что только при entities decoding выдает в unicode. так что ищите, где выкидывается exception и думайте как с эти жить далее. -- Sergey Skvorstov mailto: skv@protey.ru Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6488f0c46f3e.html, оценка из 5, голосов 10
|