【问题标题】:Trouble opening utf-8 URI's with Ruby's 'open-uri'无法使用 Ruby 的“open-uri”打开 utf-8 URI
【发布时间】:2011-12-10 22:24:18
【问题描述】:

我正在尝试使用 ruby​​ 和 open-uri 从谷歌地图网络服务 API 获取丹麦位置地址。

试图让 Ærø,丹麦http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false&region=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

【问题讨论】:

    标签: ruby utf-8 google-maps-api-3 escaping open-uri


    【解决方案1】:

    想通了:

    只需添加

    require 'string19'
    

    到第二个例子的顶部,它可以工作

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多