我正在尝试使用 ruby 和 open-uri 从谷歌地图网络服务 API 获取丹麦位置地址。
试图让丹麦埃罗: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