ruby - 将带空格的字符串转换为 URL

标签 ruby url-encoding yql

我正在使用 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=

唉,这个网址是非法的。在 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。

最佳答案

如果你想转义一个 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'"

关于ruby - 将带空格的字符串转换为 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3126952/

相关文章:

java - 开源 OCR

ruby - bcrypt-ruby 密码生成和检查

css - 在 ruby​​ 中更新 SASS

java - URL 编码字符串不是有效的 URI

javascript - 使用 YQL 与 JQuery 进行跨域请求

rest - YQL 的替代品

ruby-on-rails - lovdbyless VS 社区引擎……哪个最好?

swift - 如何使用 NSURLComponents 将 + 编码为 %2B

email - Hotmail 弄乱了编码的 URL 参数

YQL 控制台工作不一致