Ruby: как представить многобайтовые символы в виде октетов с экранированием в процентах для потребления httparty - PullRequest
1 голос
/ 16 марта 2011

Я использую HTTParty для получения данных json из некоторого URL-адреса REST

require 'httparty'

@search_term = "movies"
@data = HTTParty.get("http://api.douban.com/events?q=#{@search_term}")

Проблема заключается в том, что я передаю параметр get, содержащий многобайтовые символы, например, если я хочу использовать китайскийUTF-8 поисковый термин, "电影":

@search_term = "电影"
@data = HTTParty.get("http://api.douban.com/events?q={@search_term")

Я получаю ошибку

URI :: InvalidURIError в / bad URI (не URI?): Ссылка здесь

Выполняя поиск в Stackoverflow, я нашел следующий ответ , в котором предлагается отформатировать мой @search_term в октеты с процентным экранированием, но я не смог выяснить, как это сделать.

Я ищу решение, которое будет выглядеть так:

@search_term = params[:search_term]
@search_term = solution_with_some_escaping_or_something(@search_term)
@data = HTTParty.get("http://api.douban.com/events?q={@search_term")

#profit

1 Ответ

3 голосов
/ 16 марта 2011

Я не пробовал это с не английскими символами ... но что-то вроде этого должно работать.

require 'cgi'

@search_term = CGI::escape(@search_term)
...