【问题标题】:Convert string with white space into URL将带有空格的字符串转换为 URL
【发布时间】:2010-06-27 09:23:57
【问题描述】:

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

正如您所希望看到的 :),编码都是错误的。我想知道有没有人知道我可以如何生成正确的网址。

【问题讨论】:

    标签: ruby url-encoding yql


    【解决方案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'"
    

    【讨论】:

    • 请注意,这会将# 转换为%23,因此可能不是您想要的。
    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多