URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5107
[ Назад ]

Исходное сообщение
"Ищу модуль кодировки URL"

Отправлено Наталья , 02-Фев-06 18:04 
Мне вот кто то сказал, что в перле есть модуль, который кодирует и раскодирует URL, т.е. приводит к виду

http://www.yandex.ru/yandpage?&q=1374348082&p=1&ag=d&qs=&text=считать+из+db+файла+Perl

русскоязычные названия, например.
Или проще написать ручами функицю, которая название переводит в такой хитрый хекс вид?


Содержание

Сообщения в этом обсуждении
"Ищу модуль кодировки URL"
Отправлено idle , 03-Фев-06 14:52 
>Мне вот кто то сказал, что в перле есть модуль, который кодирует
>и раскодирует URL, т.е. приводит к виду
>
>http://www.yandex.ru/yandpage?&q=1374348082&p=1&ag=d&qs=&text=считать+из+db+файла+Perl
>
>русскоязычные названия, например.
>Или проще написать ручами функицю, которая название переводит в такой хитрый хекс
>вид?
Я не совсем понимаю почему у Вас 1374348082=считать, и вообще где Вы взяли эту строку, так как у меня запрос "считать+из+db+файла+Perl" в яндексе превращается в "%F1%F7%E8%F2%E0%F2%FC%2B%E8%E7%2Bdb%2B%F4%E0%E9%EB%E0%2BPerl+&stype=www" и это вот как раз хекс(16ый). В перле для этого есть модуль URI::Escape.

"Ищу модуль кодировки URL"
Отправлено Wulf , 04-Фев-06 15:19 
>Мне вот кто то сказал, что в перле есть модуль, который кодирует
>и раскодирует URL, т.е. приводит к виду
>
>http://www.yandex.ru/yandpage?&q=1374348082&p=1&ag=d&qs=&text=считать+из+db+файла+Perl

sub url_encode{
  my $URLencode=shift;
  $URLencode=~s/([^0-9A-Za-z_ ])/'%'.unpack('H2',$1)/ge;
  $URLencode=~s/\s/+/g;
  return $URLencode;
}

достойно отдельного модуля?


"Ищу модуль кодировки URL"
Отправлено mthawk , 06-Фев-06 15:00 
>Мне вот кто то сказал, что в перле есть модуль, который кодирует
>и раскодирует URL, т.е. приводит к виду
>
>http://www.yandex.ru/yandpage?&q=1374348082&p=1&ag=d&qs=&text=считать+из+db+файла+Perl
>
>русскоязычные названия, например.
>Или проще написать ручами функицю, которая название переводит в такой хитрый хекс
>вид?
sub urldecode{
$data=shift;
$data=~s/\+/ /g;
$data=~s/%([0-9A-Ha-h]{2})/pack('C',hex($1))/ge;
return $data;
}
А это модуль "раскодировки";



"Ищу модуль кодировки URL"
Отправлено Наталья , 06-Фев-06 15:49 
Всем большое спасибо, оказывается все еще проще:

use CGI;

sub encode_url {
   (my $m_url) = @_;
   return CGI::escape($m_url);
}

sub decode_url {
   (my $m_url) = @_;
   return CGI::unescape($m_url);
}

и кодирует и раскодирывает строку в url