Кодируем URL из командной строки

Иногда нужно отправить get-запрос на веб-сервер без браузера, например:

wget http://blablabla.bla/hz.cgi?uid=Yababay


Всё это работает до тех пор, пока параметром запроса не становится слово, содержащее нелатинские буквы либо специфические знаки. Например, вариант

wget http://blablabla.bla/hz.cgi?uid=Бабайка

не прокатит. Такие URL-параметры должны быть должным образом закодированы. Как это сделать прямо из командной строки? Секретами делятся консольные гуру с commandlinefu.com.

perl -MURI::Escape -e 'print uri_escape("Бабайка");'

Результат —
%D0%91%D0%B0%D0%B1%D0%B0%D0%B9%D0%BA%D0%B0


Хех! Перл-шмерл… Суровые знатоки Groovy делают это так:

groovy -e 'println URLEncoder.encode("Бабайка")'

Результат тот же —
%D0%91%D0%B0%D0%B1%D0%B0%D0%B9%D0%BA%D0%B0
  • +6
  • 30 августа 2010, 20:24
  • yababay

Комментарии (6)

RSS свернуть / развернуть
+
0
чаще бывает нужно обратно
обратно то как?
avatar

Gangsta

  • 31 августа 2010, 08:22
+
+1
Ты не поверишь:

perl -MURI::Escape -e 'print uri_unescape("%D0%91%D0%B0%D0%B1%D0%B0%D0%B9%D0%BA%D0%B0");'


groovy -e 'println URLDecoder.decode("%D0%91%D0%B0%D0%B1%D0%B0%D0%B9%D0%BA%D0%B0")'

Сам только что узнал
avatar

yababay

  • 31 августа 2010, 12:02
+
0
Ну, а самый простой способ декодировать URL — вставить его в адресную строку Firefox:

www.hz.hz/?hz=%D0%91%D0%B0%D0%B1%D0%B0%D0%B9%D0%BA%D0%B0

Браузер ругнется на несуществующий сервер, но URL в кириллицу перекодирует. Этот принуип использоват в Википедии.
avatar

yababay

  • 31 августа 2010, 17:00
+
0
Накидать php скрипт из одной строки тоже не проблема
urlencode(«бабайка»);
urldecode(«бабайка»);
на мой взгляд даже проще.
avatar

S1eng

  • 13 ноября 2010, 18:24
+
0
Здесь приведено 4(!) способа (де)кодирования URL. Побольше бы таких конструктивных обсуждений, выходящих за рамки банальных «понравилось/не понравилось».
avatar

yababay

  • 14 ноября 2010, 02:13
+
0
конструктивно
avatar

Markony

  • 14 ноября 2010, 11:21

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.