Преобразуйте строку с пробелом в URL

Я использую рубин и гуглю обратный геокод yql таблица для идеальной автоматизации некоторого поискового запроса, который я имею. Проблема, которую я поразил, превращает запрос в легальный формат ссылки. Проблема - то, что кодирование, которое я использую, возвращает недопустимые URL. Запрос, который я выполняю, следующие

query="select * from google.geocoding where q='40.714224,-73.961452'" 
pQuery= CGI::escape(query)

Возможный вывод для обработанного запроса похож на это

http://query.yahooapis.com/v1/public/yql?q=select+%2A+from+google.geocoding+where+q%3D%2740.3714224%2C--73.961452%27+format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=

Увы URL недопустим. При проверке того, на что запрос shoud похож в консоли YQL, я получаю следующее

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20google.geocoding%20where%20q%3D%2240.714224%2C-73.961452%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=

Как можно, надо надеяться, видеть :), кодирование неправильно. Я задавался вопросом, делает любой знает, как я могу пойти о генерации корректных URL.

11
задан Steve 27 June 2010 в 09:23
поделиться

1 ответ

Если вы хотите избежать URI, вы должны использовать URI :: escape :

require 'uri'

URI.escape("select * from google.geocoding where q='40.714224,-73.961452'")
# => "select%20*%20from%20google.geocoding%20where%20q='40.714224,-73.961452'"
22
ответ дан 3 December 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: