1

我正在使用 HTTParty 从一些 REST url 获取 json 数据

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 at / bad URI(is not URI?): link here

在 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
4

1 回答 1

3

我没有用非英文字符尝试过。但是这样的东西应该可以工作。

require 'cgi'

@search_term = CGI::escape(@search_term)
于 2011-03-16T08:23:56.340 回答