ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:mb_http_output()のあと、サーバーにより挙動が違う) mb_http_output()によるサーバーの挙動の違いについて 2009/12/01 21:59 このQ&Aのポイント mb_http_output()関数を使用することで、サーバーにより文字コードの挙動が異なることがあります。テストサーバーでは、Shift_JISで表示されますが、実際のサーバーではUTF-8のまま出力される場合があります。php.iniや環境設定を変更しても問題は解決しません。 mb_http_output()のあと、サーバーにより挙動が違う 対処はしたのですが、すこし腑に落ちない点があります。 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.*はすべて同じ値にしましたが 違いは埋まりませんでした。 環境設定で何が違うと、 このようなことが生じるのでしょうか? 画像を拡大する 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー UmJammer ベストアンサー率58% (115/196) 2009/12/02 20:52 回答No.1 output_buffering、output_handlerの設定値に差があるということはないですか? 質問者 お礼 2009/12/06 14:07 回答ありがとうございます。 指摘をいただくまで確認していませんでした。 すっきり解決しました。 参考までに、 テストサーバー側は output_buffering no value no value output_handler mb_output_handler mb_output_handler で、 さくら側は output_buffering 0 0 output_handler no value no value になっていました。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発PHP 注目のQ&A 「前置詞」が入った曲といえば? 新幹線で駅弁食べますか? ポテチを毎日3袋ずつ食べています。 優しいモラハラの見抜き方ってあるのか モテる女性の特徴は? 口蓋裂と結婚 らくになりたい 喪女の恋愛、結婚 炭酸水の使い道は キリスト教やユダヤ教は、人殺しは地獄行きですか? カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど
お礼
回答ありがとうございます。 指摘をいただくまで確認していませんでした。 すっきり解決しました。 参考までに、 テストサーバー側は output_buffering no value no value output_handler mb_output_handler mb_output_handler で、 さくら側は output_buffering 0 0 output_handler no value no value になっていました。