@bezgerts

Как правильно кодировать url с русскими символами в Rails 4?

Здравствуйте!

Пишу на RoR 4 недавно. Программированием тоже занимаюсь недавно, в связи с этим не хватает знаний для того, чтобы решить данную проблему, а именно:
при переходе по данной ссылке:

http://maps.yandex.ru/?text=сбербанк&sll=50.186334...

появляется такая ошибка:
bad URI(is not URI?): http://maps.yandex.ru/?text=сбербанк&sll=50.186334...

Если я меняю "сбербанк" на "sberbank" все работает отлично.
def yandex_map(number)
      require 'open-uri'
      require 'rubygems'
      require 'nokogiri' #-парсинг HTML
      require 'json' #-парсинг json
      require 'uri' #-открытие по URL



      @html = open("http://maps.yandex.ru/?text=сбербанк&sll=50.18633499999997%2C53.216120999997734&sspn=0.377655%2C0.123853&z=12&results=20&ll=50.186333%2C53.216119&spn=0.377655%2C0.123853&l=map")
      @nokogiri = Nokogiri::HTML(@html)
      @may = @nokogiri.css('#vpage').inner_text
      @j_parse = JSON.parse(@may)

      json_companys = Array.new(number)
      json_telefons = Array.new(number)


      number.times do |i|
        json_companys[i] = @j_parse['vpage']['data']['businesses']['GeoObjectCollection']['features'][i]['properties']['name']
      end
      return json_companys 
    end


Как исправить данную ошибку и использовать ссылки с русскими символами?
Пробовал URI.encode, не сработало.
  • Вопрос задан
  • 3431 просмотр
Пригласить эксперта
Ответы на вопрос 4
FanKiLL
@FanKiLL
Так что вам нужно? поменять русские символы на eng?
Ответ написан
FanKiLL
@FanKiLL
require 'uri'
=> true
irb(main):002:0> URI.escape("http://maps.yandex.ru/?text=сбербанк&sll=50.18633499999997%2C53.216120999997734&sspn=0.377655%2C0.123853&z=12&results=20&ll=50.186333%2C53.216119&spn=0.377655%2C0.123853&l=map")
=> "http://maps.yandex.ru/?text=%D1%81%D0%B1%D0%B5%D1%80%D0%B1%D0%B0%D0%BD%D0%BA&sll=50.18633499999997%252C53.216120999997734&sspn=0.377655%252C0.123853&z=12&results=20&ll=50.186333%252C53.216119&spn=0.377655%252C0.123853&l=map"


Странно у меня URI.escape нормально отрабатывает.
Ответ написан
@floydback
gem 'unicode'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы