【PHP】mbstring.http_outputが有効にならない


現在.htaccessに下記設定を行っていますが
EUC-JPで書かれたPHPファイルをブラウザで表示した際に
本来SJISで出力されるはずのものが、EUC-JPで出力されてしまっており
どうしたものかと頭を悩ませております。

どうやらmbstring.http_outputが無視されているような感じを受けます

どなたか解決方法に心当たりのおられる方がいらっしゃいましたら
ご回答いただければと思います。

■サーバ環境

OS :CentOS 5.3
PHP :5.2.9
APACHE :2.2.12

■.httaccess
php_value mbstring.detect_order auto
php_value mbstring.language Japanese
php_flag mbstring.encoding_translation On
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.http_input SJIS
php_value mbstring.http_output SJIS

※本設定は同ディレクトリ内にphpinfo()と書いたPHPファイルを用意→実行し、設定が反映されていることを確認しています。
※今回問題となっているEUC-JPでWEB出力されてしまうPHPファイルも同ディレクトリ内にあります。

回答の条件
  • 1人2回まで
  • 登録:2009/09/04 12:02:50
  • 終了:2009/09/11 12:05:02

回答(4件)

id:kirara_namazu No.1

kirara_namazu回答回数34ベストアンサー獲得回数02009/09/04 13:00:30

ポイント27pt

header("Content-type: text/html; charset=shift_jis");

を記入されてテストしてみてはいかがでしょうか

URLはダミーです

なまずの独り言 - 閉塞感をぶち破るために・・・

id:wate_wate No.2

ワテ回答回数45ベストアンサー獲得回数32009/09/04 13:52:44

ポイント27pt

状況から考えると、

HTTPヘッダーで

Content-type: text/html; charset=EUC-JP

を吐いているため

ブラウザ側で「EUC-JP」で認識されていると思いますので、

1ページだけであれば1の方の方法で対処できるかと思いますが、

全体に適用させたい場合は、

アクセスコントロールファイルに

php_value default_charset shift_jis

を追記してみてはいかがでしょうか。

id:jayz

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

質問時の内容が少しまずかったかもしれません。

HTTPヘッダはSJISとなっているようで、ブラウザには文字化けした日本語が表示されています。

この状態でブラウザのエンコード設定はSJISですが、これをEUC-JPに設定しなおすと

日本語が正常に表示される状態となっています。

(EUC-JPで書かれたコードがSJISに変換されることなく表示されている)

2009/09/04 14:18:42
id:wate_wate No.3

ワテ回答回数45ベストアンサー獲得回数32009/09/04 14:43:49

ポイント26pt

そういう内容でしたか・・・、

リベンジです。

私の場合は、最初からmbstring.http_outputの内容を信用していないので、

EUC-JPで作成したものをSJISで出力する必要がある場合は、

HTMLタグの開始タグの前でApacheの出力バッファを取得するようにして、

HTMLタグの閉じタグ以降で

その出力バッファを変数に入れて、

文字コード変換をかけて出力してました。

以下がサンプルコードです。

※PHPタグ正常に表示されないので

全角で書いてます。

------------

<?php

ob_start();

?>

<html>

~省略~

</html>

<?php

header("Content-type: text/html; charset=shift_jis");

$contents = ob_get_clean();

mb_convert_variables("SJIS","EUC-JP",$contents);

$search_string = 'charset=euc-jp"';

$replace_string = 'charset=shift-jis"';

$contents = str_replace($search_string,$replace_string,$contents);

echo $contents;

?>

------------

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 GoldenDawn 426 399 81 2009-09-06 13:36:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません