Chromeで Twitterのsearch APIを叩いていたところ、クエリが半角英数字のみの場合はうまく取得できていたが、日本語を混ぜた途端取得データがおかしくなってしまった。
おそらくエンコード周りでミスしたのだろうと思い少し調べてみたところ、予想通りだった。
TwitterのAPIは文字コードUTF-8でクエリを解釈する仕様なので、クライアントからリクエストを投げるときもUTF-8でエンコードする必要がある。
JavaScriptでエンコードするためには、window.encodeURIComponent("クエリ")
などを使えば良いことは知っていたのだが、手元のChromeでのデフォルトの文字コードはUTF-8ではなかったらしい。
文字コードを明示するためにHTMLの
内に以下の宣言を入れてみると、あっさり解決した。<meta charset="utf-8">
ちなみに chrome://settings-frame/fonts によれば、Chromeの標準エンコードは初期設定ではShift_JIS
に設定されていた。