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

Есть url с русскими символами. Например, www.example.com/index.htm?id=текст.
Пробовал методы URI.encode, URI.parse, CGI::encode,iconv (с кодировками ASCII-8BIT,binary,utf-8,windows-1251) и другие, однако ничего не помогает — русский текст кодируется неправильно. Как решить эту проблему?
P.S. Пробовал Ruby 1.8.7, Ruby 1.9.3 на Windows и Ruby 1.8.7 на Linux.
P.P.S. Забыл добавить, что нужно прочитать страницу с помощью метода open.
  • Вопрос задан
  • 6992 просмотра
Решения вопроса 1
@dublicator Автор вопроса
Решил проблему. Сначала нужно конвертировать url из UTF-8 в Windows-1251:
require 'addressable/uri'

url_string="http://www.podshypnik.info/index.php?zid=bearing_info&standart=gost8338&bearing=28К".encode('Windows-1251','UTF-8')
url=Addressable::URI.parse(url_string)
url=url.normalize
puts url

В итоге получается правильно
www.podshypnik.info/index.php?zid=bearing_info&standart=gost8338&bearing=28%CA
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
int03e
@int03e
# encoding: utf-8
require 'uri'

puts URI::encode 'www.example.com/index.htm?id=текст'


У меня работает, MRI 1.9.3
Ответ написан
Ваш ответ на вопрос

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

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