Ruby:HTTPARTY消費のためのパーセントエスケープオクテットとしてマルチバイト文字を表現する方法
-
24-10-2019 - |
質問
私は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)
所属していません StackOverflow