|
|
|
|
2003.8.18
ふと Mozilla で日記ページの情報を見てみたら、あろうことかエンコーディングが Shift JIS と表示されている。慌てて PHP を使っている他のドキュメントも確かめてみると、これが軒並み Shift JIS。ところが、文字化けも起きずに、ページはちゃんと表示されている。これはどうしたことか。ぼくの作っているページは、太古の昔ならいざ知らず、もっぱら EUC-JP なのである。
ソースを確認してみても怪しいところはない。と思うのだが、PHP はまだ使い始めてから日が浅いので、あまり自信がない。二十分ほど腕組みをして考える。
以前の日記にも書いたが、HTTP ヘッダはドキュメント側で header() を使って書いている。他のヘッダはちゃんとレスポンスとして返ってくるから、これは間違いない。しかし Content-Type ヘッダだけは text/html; charset=Shift_JIS になっている。どうも php.ini で設定したものが強制的に入っているような雰囲気だ。しかし、事情があって、php.ini の default-charset を EUC-JP にするわけにはいかない。
試しに、以前文字化けの原因だった mb_http_output() で EUC-JP を指定してみる。すると、おお、うまくいったじゃないか。header() と組み合わせれば文字化けも発生せず、レスポンスヘッダも正しく返ってくることがわかった。とりあえず一件落着である。
しかし、それならドキュメントに書いている Content-Type ヘッダはどこへいってしまったのか。実にミステリアスである。つーかバグですか? フィードバックするべき? それとも既知の仕様?
|
|
|
|
Copyright © 2002-2024 WhiteApple all rights reserved.
|