3

ruby と open-uri を使用して、Google マップ Web サービス API からデンマークの住所を取得しようとしています。

Ærø、デンマークを取得しようとしています: http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false®ion=dk Chrome で動作し、open-uri では動作しません:

require 'rubygems'
require "open-uri"
require 'json'

uri = "http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false&region=dk"
response = open(uri)
array = JSON.parse(response)
pp array

ここでそれが得られます

/usr/lib/ruby/1.8/uri/common.rb:436:in `split': bad URI(is not URI?): http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false&region=dk (URI::InvalidURIError)

それを行う別の方法は、文字をエスケープすることです。

uri = "http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false&region=dk"
uri_escaped = URI.escape(uri)
response = open(uri_escaped)
array = JSON.parse(response.read)
pp array

しかし、これはエスケープされた結果をもたらします(これは求められていません:-)

この問題を解決できる方法 (エスケープされていないフィードバックを取得するか、utf-8 リクエストを送信する) を知っている人はいますか?

ここのRubyバージョンは1.8.7です

4

1 に答える 1

0

理解した:

追加するだけ

require 'string19'

2番目の例の上部に移動すると機能します

于 2011-10-19T13:34:53.400 に答える