Ruby:HTTPARTY消費のためのパーセントエスケープオクテットとしてマルチバイト文字を表現する方法

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

質問

私は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(uri not 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
役に立ちましたか?

解決

私は英語以外のキャラクターでそれを試していません。しかし、このようなことはうまくいくはずです。

require 'cgi'

@search_term = CGI::escape(@search_term)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top