mbstring.http_output と charset
▽20040413a
#プログラミング
#PHP
英語のサイトがふたつあって,片方は IE で英語フォント(Arial とか)で表示され,
他方は日本語フォント(MS Pゴシックとか)で表示されるわけですよ.
気付いた時は「なんででしょうね今度調べときますよエヘヘヘっていうかこんなん気にするなゴルァ」
とか言って放置してたんだけど,今日,その原因が判明.
ページ自体はどちらも同じようなもので,
html lang="en" だし,meta でも charset=iso-8859-1 を指定してある.
で,どこで日本語・英語が分かれてるかというと,日本語で表示される方は,
HTTP レスポンスヘッダに Content-Type: text/html charset=Shift_JIS が出てた.
誰が出してるかというと,PHP だった.
日本語の方は,拡張子 .html でも PHP が動くよう AddType してたのだ.
でもって,この PHP の設定で mbstring.http_output = SJIS にしてたものだから,
出力時に PHP が勝手に上記のレスポンスヘッダを付けていたというわけ.
ってことで対処:今回は英語ページは /en ディレクトリにまとめてあったので,
.htaccess で mbstring.http_output = pass にして解決.