Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Malformed UTF-8 character   Alexander Kostiuchenko   28 Sep 2003 01:39:57 
 Re: Malformed UTF-8 character   Alexey Mahotkin   30 Sep 2003 09:08:38 
 Re: Malformed UTF-8 character   Sergey Skvortsov   30 Sep 2003 15:30:28 
 Re: Malformed UTF-8 character   Alexey Mahotkin   01 Oct 2003 23:31:28 
 Re: Malformed UTF-8 character   Sergey Skvortsov   02 Oct 2003 16:14:06 
 Re: Malformed UTF-8 character   Andrey Sapozhnikov   02 Oct 2003 19:03:05 
 Re: Malformed UTF-8 character   Sergey Skvortsov   06 Oct 2003 16:04:59 
Архивное /ru.perl/6488f0c46f3e.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional