我正在尝试使用ruby和open-uri从谷歌地图网络服务API获取丹麦的位置地址。
尝试Ærø,丹麦:http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false®ion=dk< / em>在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
答案 0 :(得分:0)
想出来:
添加
require 'string19'
到第二个示例的顶部,它可以正常工作