ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。

対処はしたのですが、すこし腑に落ちない点があります。

MySQL、PHPすべての文字コードをUTF-8にしています。
しかし携帯がShift-JISなので、出力時に帳尻を合わすためmb_http_output()を使いました。

 $str="内容は、METAタグのContentも含め全部UTF-8のHTMLソースです。";
 mb_http_output("Shift_JIS");
 $str=str_replace('content="text/html; charset=utf-8"','content="text/html; charset=Shift_JIS"',$str);
 exit($str);

テストサーバーでは正常にShift_JISで表示されました。
携帯でも確認済みです。

しかし実際のサーバー(さくらインターネットのスタンダード)だと
2行目と3行目の間に
 mb_convert_encoding($str,'SJIS','UTF-8');
を挟まないとUTF-8のまま出力されてしまいます。


php.iniでmbstring.*はすべて同じ値にしましたが
違いは埋まりませんでした。


環境設定で何が違うと、
このようなことが生じるのでしょうか?

「mb_http_output()のあと、」の質問画像

A 回答 (1件)

output_buffering、output_handlerの設定値に差があるということはないですか?

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

指摘をいただくまで確認していませんでした。
すっきり解決しました。

参考までに、
テストサーバー側は
output_buffering no value      no value
output_handler  mb_output_handler  mb_output_handler
で、
さくら側は
output_buffering 0     0
output_handler no value no value
になっていました。

お礼日時:2009/12/06 14:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報