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®ion=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®ion=dk (URI::InvalidURIError)
それを行う別の方法は、文字をエスケープすることです。
uri = "http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false®ion=dk"
uri_escaped = URI.escape(uri)
response = open(uri_escaped)
array = JSON.parse(response.read)
pp array
しかし、これはエスケープされた結果をもたらします(これは求められていません:-)
この問題を解決できる方法 (エスケープされていないフィードバックを取得するか、utf-8 リクエストを送信する) を知っている人はいますか?
ここのRubyバージョンは1.8.7です