| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Несовпадение кодировок для яндекса |
| Автор: Satell 5.1.2008, 13:56 | ||||
| из формы с текстовым полем name=word передаётся запрос для яндекса в скрипт обработчик, код ниже но яндекс не понимает кодировку и говорит что запрос был пустой, похоже это происходит во время передачи формы на сервер, хотя print $word; после передачи печатает слово правильно. если раскаментить строчку #$word="грузовые перевозки"; то всё будет работать, где что нужно поменять, чтобы яндекс понимал слово переданное из формы, есть ли какие-нибудь функции для смены кодировок, подозреваю, что нужно перевести в кодировку utf-8, библиотека iconv на моём сервере похоже не стоит.
код формы:
|
| Автор: nitr 5.1.2008, 20:11 | ||||
| Надо сделать "валидный" урл Это делает модуль URI::Escape, т.к. у вас кодировка windows-1251, то надо её в утф8 перевести Для решения: Satell, сделайте вот так 1) добавьте
2) затем замените строку на эту
|
| Автор: Bulat 24.1.2008, 18:13 |
| Так в дополнение, сам в последнее время мучаюсь с проблемой кодировок и внимательно изучаю. nitr, работа с модулем Encode хороший вариант. Только у меня стоит перл 5.8.6 и тут он начинает ругатся на недостаток каких-то модулей. Более сложный, но самый верный вариант это заранее знать в какой кодировке загружаемая страница в браузере(как правило в utf-8), после чего получать исходный текст в текущей кодировке и пропускать через функцию uri_escape того же модуля URI::Escape. Способ не простой, но 100%. И кстати, все же далеко не все сайты написаны в кодировке utf-8 |
| Автор: nitr 24.1.2008, 22:33 |
| Bulat, у него для формирования запроса к поисковику Яндекса, это конкретика. А для парсинга страничек и т.п. вообще не эта тема, их кстати тоже очень много раз обсуждали, как и что парсить, обсуждали и автоопределение кодировок. А в этой теме вообще не видно парсинга, у него ошибка в формировании ССЫЛКИ P.S.: Если у вас проблема с модулем Encode, то можете создать тему |