2011-10-19 32 views
3

我試圖從ruby和open-uri的google maps web services API中獲得丹麥的位置地址。用Ruby的open-uri打開utf-8 URI

好一會Ærø酒店,丹麥http://maps.googleapis.com/maps/api/geocode/json?address=ærø&傳感器=假&地區= DK作品在Chrome與打開-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

回答

0

想通了:

只需添加

require 'string19' 

第二例的頂部和它的作品