Ruby: Cómo representar caracteres multimititos como octetos porcentuales para el consumo de HTTParty
-
24-10-2019 - |
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
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