Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > Perl
Перезагрузить страницу Несовпадение кодировок для яндекса
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Satell Satell вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.01.2008
По умолчанию 05.01.2008, 15:02

из формы с текстовым полем name=word передаётся запрос для яндекса в скрипт обработчик, код ниже
но яндекс не понимает кодировку и говорит что запрос был пустой, похоже это происходит во время передачи формы на сервер, хотя
print $word; после передачи печатает слово правильно.

если раскаментить строчку #$word="грузовые перевозки";
то всё будет работать, где что нужно поменять, чтобы яндекс понимал слово переданное из формы, есть ли какие-нибудь функции для смены кодировок, подозреваю, что нужно перевести в кодировку utf-8, библиотека iconv на моём сервере похоже не стоит.


Код:
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request::Common;


sub urldecode{
    local($val)=@_;
    $val=~s/\+/ /g;
    $val=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/ge;
    return $val;
}

if ($ENV{'REQUEST_METHOD'} eq 'GET') {
    $query=$ENV{'QUERY_STRING'};
}
elsif($ENV{'REQUEST_METHOD'} eq 'POST'){
    sysread(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}

@formfields=split(/&/,$query);
foreach(@formfields){
if(/^word=(.*)/){$word=&urldecode($1);}
}

print "Content-Type: text/html; charset=windows-1251\n\n";
print $word;


#$word="грузовые перевозки";
$ua=LWP::UserAgent->new or die; #создаем новый объект LWP::userAgent (браузер)

$h1 = new HTTP::Headers
Accept => 'application/vnd.ms-excel, application/msword, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-comet, */*',
User_Agent => 'testag',
Referer => 'http://ya.ru',
Accept-Language => 'ru',
Accept-Charset => 'iso-8859-1,*,utf-8,windows-1251';
$req1 = new HTTP::Request ('GET', 'http://www.yandex.ru/yandsearch?text='.$word, $h1);
$res=$ua->request($req1);



#проверяем был ли запрос удачен
$suc=$res->is_success;
if ($suc){
    print $res->content;
}
код формы:
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Запрос</title>
</head>

<body>
<form action="cgi-bin/tests.cgi" method="post">
<p align="left">

<p align="left">
  <input type="text" name="word" size="26"></p>


<input type="submit" value="Send">
</p>
</form> 
</body>
</html>
Ответить с цитированием
  (#2 (permalink)) Старый
ivanyan ivanyan вне форума
Member
 
Сообщений: 305
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.06.2002
По умолчанию 07.02.2008, 14:20

возможны как минимум 2 проблемы

; charset=iso-8859-1 <-- здесь

и здесь --> if(/^word=(.*)/){$word=&urldecode($1);}

попробуйте заменить на =(.+?)

и вообще есть более простые способы получения параметров формы
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вместо страницы яндекса отображается другой сайт. виктор67 Любые вопросы от новичков 31 19.04.2011 17:03
Загрузка яндекса в любом браузере выдает ошибку: не возможно отобразить страницу. aris22 Любые вопросы от новичков 6 11.03.2010 18:16
Почему мой сайт выбросили из Яндекса? Ltybc Разное 0 20.11.2008 23:55
При открытии страницы яндекса появляется ошибка: We were unable to return you to yand slim Любые вопросы от новичков 3 20.10.2008 00:57
Несовпадение стиля GUI между документацией и программой 6.3 semantics Prolog 0 05.05.2006 18:01
Вакансия от Яндекса (Москва) ITpeople Team Работа 0 24.06.2005 21:31
Конфликт кодировок консольной проги и самой консоли Monsta Visual C++ 28 03.02.2005 23:32



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов