にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

日本語の検索クエリを投げるときのナゾ?

ニコニコ動画ダウンロードAPIを実装していて、アルファベットのみのクエリなら上手く取得できるが、日本語を含むクエリだと検索結果が0件になってしまうことがあった。
どうやら、クエリをエスケープするとき、一度だけではなく二度エスケープしなければならないらしい。
つまり、検索結果を取得するためのURLを作るときに、

BASE_URL='http://www.nicovideo.jp'
@search_type = 'search'
@keyword = CGI.escape(keyword)
url = "#{BASE_URL}/#{@search_type}?ref=top&s=#{@keyword}"

ではなく、

BASE_URL='http://www.nicovideo.jp'
@search_type = 'search'
@keyword = CGI.escape(CGI.escape(keyword)) # ←2回エスケープ
url = "#{BASE_URL}/#{@search_type}?ref=top&s=#{@keyword}"

としなければならないらしい。なぜだろ?