shindig の makeRequest で文字化け回避法

shindig の makeRequest で得たテキストデータが文字化けするようなのでソースを追ってみた。
makeRequest された shindig(サーバー側)は取ってきたコンテンツを直接返すのではなく、JSONの形に直して送るようだ。
この時 shindig 側ではバイト配列を String にする処理が行われるのだが、Java の内部文字列は UTF-8 固定なので、[何か]→UTF-8 の変換を試みる。
shindig はこの[何か]をコンテンツについていたレスポンスヘッダから判断するようで、コンテンツ提供側のサーバーが送ったレスポンスヘッダが間違っていると文字化けしてしまう。

追記(10/18)と思ったのだが「utf-8」とヘッダを送信しても文字化けするみたい。逆にドキュメントタイプを「text/html」以外にすると文字化けしない???

解決策はいくつかある。

  1. コンテンツ提供側のサーバーのヘッダをどうにかする。設定を弄るのが根本的な解決法だけど、静的ファイルなら拡張子によってヘッダを生成していることがほとんどなので、拡張子を変えると解決することもある。動的データの場合はそれを生成しているプログラムを弄らなきゃだめかな。
  2. makeRequest するときコンテンツ形式に JSON を指定する。自分は試したわけではないがこうすると上手く行くらしい。たぶんサーバー側で得たデータをそのまま返すようになるんだと思う。

ちなみに自分は静的データを取ってきたときに文字化けしてたのですが拡張子を「.html」から「.part」に変えるだけで解決しました。