Ruby: Cómo representar caracteres multimititos como octetos porcentuales para el consumo de HTTParty

StackOverflow https://stackoverflow.com/questions/5322380

Pregunta

Estoy usando HTTParty para obtener datos JSON de una URL de descanso

require 'httparty'

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

El problema es si paso un parámetro GET que contiene caracteres de múltiples bytes, por ejemplo, si quería usar un término de búsqueda chino UTF-8, "电影":

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

Recibo un error

Uri :: Invalidurierror at / bad uri (no es uri?): Enlace aquí

Buscando en stackoverflow, encontré lo siguiente responder Lo que sugiere formatear mi @search_term a octetos porcentuales, pero no he podido descubrir cómo hacerlo.

Estoy buscando una solución que se vea como:

@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
¿Fue útil?

Solución

No lo he probado con personajes no ingleses ... pero algo como esto debería funcionar.

require 'cgi'

@search_term = CGI::escape(@search_term)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top