12

私は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は違法です。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を生成する方法を誰かが知っているのだろうかと思っていました。

4

1 に答える 1

23

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'"
于 2010-06-27T09:41:57.670 に答える