Я пытаюсь получить датские адреса местоположений из API веб-служб карт Google с помощью ruby и open-uri.
Попытка получить Эрё, Дания : 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
Разобрался:
Просто добавьте
require 'string19'
к началу второго примера, и это работает