• ベストアンサー

mbstring.http_output = UTF-8 としているのにSJISで出力されているようである

php.iniでmbstring.http_output = UTF-8 としました。 テキストエディタで <HTML> <BODY> <?PHP echo "教えて"; ?> </BODY> </HTML> というファイルをつくり、sjisで保存し、test.phpと名づけました。 このファイルをブラウザで表示させる際、エンコードをUTF-8とすると文字化けしてしまいます。 SJISだとちゃんと表示できます。 mbstring.http_output = UTF-8としている以上UTF-8に変換されるわけではないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

mb_internal_encodingをキチンとsjisで指定した上で、ob_startしてください(参照URLをどうぞ)。mb_internal_ecnoding → mb_http_output への変換はしてくれると思います。ただしinput側(フォーム入力など)はまた別の話なので要注意。このあたりはマニュアルを熟読してください。

参考URL:
http://www.php.net/manual/ja/function.mb-output-handler.php
string
質問者

お礼

ありがとうございます。 参考URLを読んでやってみます。

string
質問者

補足

php.iniファイルにおいて output_buffering = On output_handler = mb_output_handler とし、 <?PHP ob_start(); ?> <HTML> <BODY> <?PHP echo "教えて"; ?> </BODY> </HTML> <?PHP ob_end_flush(); ?> と変更したらできました。 どうもありがとうございました。

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

ソースそのものをUTF-8にしてください もしくはinternal_encodingのほうをsjisにする

string
質問者

お礼

ありがとうございます。 私の質問の仕方が悪いのですが、ソースそのものをUTF-8にしたらUTF-8で出力されるのは当たり前だと思うのです。 別の文字コードのときに、出力がちゃんとUTF-8になることを確認したいのです。