Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > как передать + через get


Автор: evya 28.12.2014, 13:09
Хочу передать через GET запрос
test.pl?my=++++test++++++

my $query = new CGI;
print $query->param('my');


скрипт плюсы не выводит, вместо них пробелы!!!

как быть они мне нужны!!!!

всем спасибо

Автор: tzirechnoy 28.12.2014, 14:19
Вот спецыфикацыя прямого преобразования:
http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1


Автор: evya 28.12.2014, 15:06
чето ничего нипонятно куда копать из ссылки. 
print $ENV{'QUERY_STRING'};
выдает же нормально.
нужно разбирать в ручную думаете get ?

Автор: tzirechnoy 28.12.2014, 15:19
Цитата
чето ничего нипонятно куда копать из ссылки. 


В английский словарь разве что. Хотя нет, у Вас ведь проблемы как раз с прямым преобразованием -- так что, по хорошэму, надо будет ещё выяснить список reserved characters из RFC1738. Впрочем, можно и не выяснять -- а защищать всё, кроме a-z A-Z 0-9 . _ . Типа хужэ не будет.
 В остальном -- описание application/x-www-form-urlencoded по ссылке, состоящее из двух пунктов, несложным английским языком описывает преобразования, которые надо провести над данными для передачи в URL.

Автор: vadiml 28.12.2014, 19:38
Плюс надо передавать как %2B 

А сам + используется в GET для передачи строк с пробелами, чтобы строка не разрывалась.

Автор: Pfailed 28.12.2014, 21:32
Ну и модуль URI::Escape для себя откройте

Автор: tzirechnoy 29.12.2014, 14:10
Цитата
 чтобы строка не разрывалась.


Скорее -- чтобы её читать можно было. Поскольку пробел и так в списке reserved characters URI. Но без замены на ` ' на `+' была бы замена ` ' на `%20', и предложэния в URL были бы существенно менее читабельными.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)