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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     17 Apr 2002  15:14:10
 To : Artem Chuprina
 Subject : Re: LWP.Locale
 -------------------------------------------------------------------------------- 
 
 Artem Chuprina wrote:
 
 > Здравствуй, Hовотарский В.В..
 > 
 > HВВ> Кто подскажет как справиться со следующей ситуацией (ОС - XP,
 > HВВ> Windows-200). Задача - прочитать информацию из опред.сайта при помощи
 > HВВ> LWP. Проблема в том, что прочитанная информация оказываетя в
 > HВВ> кодировке Кирилица-ISO, вместо Кирилица-Windows. Browser вычитывает ту же
 > HВВ> страницу в нужной кодировке, а скрипт в Кирилица-ISO. Как можно это
 > HВВ> побороть.
 > 
 > Так же, как браузер - перекодировкой.
 
 Можно так же попытаться выставить Accept-Charset в заголовке
 (стандартный метод для HTTP/1.1, RFC 2616).
 
 $request->header('Accept-Charset' => 'windows-1251, *;q=0.5');
 
 и попросить сервер дать содержимое в кодировке windows-1251,
 если возможно, или в какой он может, если в 1251 ему никак.
 Есть еще нестандартный способ, основанный на том, что часть
 pre-1.1 веб-серверов для определения чарсета анализирует
 User-Agent. Т.е. имеет смысл одновременно с первым способом
 сделать:
 
 $ua->agent('Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)');
 
 но сервер вправе вернуть контент и в другой кодировке, если
 он не умеет выдавать в windows-1251. Поэтому необходима
 проверка типа:
 
 my $defcharset = 'windows-1251';
 my $ctype = $response->header('Content-Type');
 
 my $charset = ($ctype =~ /;\s*charset=([\w-]+)/) ? $1 : $defcharset;
 
 if ($charset !~ /1251$/) {
      ...
 
 Замечу, что $defcharset = 'windows-1251' нарушает стандарт. Документ
 с неуказанной кодировкой должен трактоваться как iso8859-1, однако в
 реальности многие русскоязычные сервера клали на это. Равно как и
 бывают странные вариации написания чарсета типа 'cp1251', посему
 введено нестрогое сравнение. В общем, я обобщенную ситуацию вкратце
 описал, но надеюсь, что для одной, отдельно взятой страницы будет
 достаточно упрощенного кода :)
 
 Андрей
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 LWP.Locale   H®ў®в абЄЁ© ‚.‚.   17 Apr 2002 12:45:48 
 Re: LWP.Locale   Artem Chuprina   17 Apr 2002 14:03:59 
 Re: LWP.Locale   Andrey Sapozhnikov   17 Apr 2002 15:14:10 
Архивное /ru.perl/528410116d9d.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional