Преобразование строки с пробелом в URL

Я использую ruby ​​и googles обратную геокодированную таблицу yql, чтобы идеально автоматизировать некоторые поисковые запросы, которые у меня есть. Проблема, с которой я столкнулся, превращает запрос в юридический формат url. Проблема в том, что кодирование, которое я использую, возвращает незаконные 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-адреса.

Ответ 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'"