JSON の response header Edit...
XMLの場合は、以下でOKな様子。(或いは BOM ですが、これはやめ。)
<?xml version="1.0" encoding="utf-8"?>さて、JSON の場合ですが、基本的には response header の charset をしっかりと設定してあげれば良さそうです。最初は何も考えずに
Content-type: text/htmlとしていました(IEやFFでも全く問題無し)が、charset すべしということで
Content-type: text/html; charset=UTF-8に変更しようとして更に調査を進めると JSONとContent-Type を発見。ここを見ると、Content-type は html ではなくて javascript になってました。そういえば何も考えていなかったので、JSON のヘッダーは html にしていたのですが、結局 JSON のヘッダーは何が適切なのかという疑問。
では、時代の最先端はどうなっているのかを再調査。上のエントリーにもあるように Catalyst::View::JSON に答えがありました。
if (($c->req->user_agent || '') =~ /Opera/) {
$c->res->content_type("application/x-javascript; charset=$encoding");
} else {
$c->res->content_type("application/json; charset=$encoding");
}
なるほど。ちなみにここからは蛇足で更にドキュメントを読み進めると、
Due to the browser gotchas like those of Safari and Opera, sometimes you have to specify a valid charset value in the response's Content-Type header, e.g. text/javascript; charset=utf-8.
ん、gotchas ?
辞書を調べてもこの単語が出てきません^^ 気になったので更に調べてみると...
Gotchasのもともとの意味は「罠、落とし穴、エラー」といった意味
だそうです。色々と勉強になりましたm(_ _)m
【追記】
http://www.rfc-editor.org/rfc/rfc4627.txt にて。
The application/json Media Type for JavaScript Object Notation (JSON)どのブラウザもこれに統一してもらいましょう。