Проблемы с открытием URI UTF-8 с помощью 'open-uri' Руби - PullRequest
3 голосов
/ 19 октября 2011

Я пытаюсь получить датские адреса местоположений из API веб-служб карт Google с помощью ruby ​​и open-uri.

Попытка получить Эрё, Дания : 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

1 Ответ

0 голосов
/ 19 октября 2011

Разобрался:

Просто добавьте

require 'string19'

к началу второго примера, и это работает

...