人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpファイルの、ブラウザ出力時の文字コードに関する質問です。

phpファイルをブラウザでみたとき、文字化けを起こしてしまい困っています。
htmlファイル(hoge.html)とphpファイル(hoge1.php)あり、どちらもEUC-JPで保存してあります。
htmlファイルの場合、<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> を書き加えることで、ブラウザから正常にみることができます。
しかし、phpファイルの場合、<meta http-equiv="Content-Type" content="text/html;charset=EUC-JP">を書き加えても、shift-jisとして出力されてしまい、文字化けした状態となってしまいます(hoge1.php)。
また、HTMLヘッダを使っても同様に、shift-jisとして出力されてします(hoge2.php)。

httpd.confやphp1.iniの設定が上手くいっていないのでしょうか。
ご回答よろしくお願いします。

以下に、環境とphpファイルを示します。
OSはVineLinux3.2。PHPはバージョン5.2がインストールされています。

hoge1.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
</head>
<body>
<?php
echo "こんにちは";
?>
</body>
</html>

hoge2.php
<?php
header('content-type:text/html; charset=EUC-JP');
header('Content-Language: ja');
echo "こんにちは";
echo phpinfo();
?>

●質問者: kokuban-kumasan
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:echo EUC-JP hoge HTML httpd
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● sirotugu40
●20ポイント

httpd.confを書き換えないと駄目ですね。

http://www.onlineconsultant.jp/pukiwiki/index.php?httpd.conf%20%...

◎質問者からの返答

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

ご指摘頂いた、httpd.conf内の設定について確認し、

AddCharset EUC-JP .euc-jp

AddLanguage ja .ja

LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca es sv tw

AddDefaultCarset off

と設定を行ない、apacheの再起動を行ないましたが、

またshift-jisで出力されてしまいました。


2 ● chrono1742
●20ポイント

HTMLの<head>タグと、PHPのheader関数は別物です。

hoge2.phpは下記のように書き、EUC-JPで保存する必要があります。

echo "<html>\n";
echo "<head>\n";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\"> \n";
echo "</head>\n";
echo "<body>\n";
echo "こんにちは";
echo "</body>\n";
echo "</html>\n";

http://www.php.net/manual/ja/function.header.php

◎質問者からの返答

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

頂きましたphpコードをEUC-JPで保存し、

ブラウザからみてみましたが、

やはりShift-jisで出力されてしまいました。

ブラウザのエンコーディングをEUCにすると文字化けすることなく表示されますので、EUCでの保存は正しく行われていると思います。


3 ● jirepo
●50ポイント

http://www.yahoo.co.jp

urlはダミーです

<?php の直後に

mb_language("ja");

mb_internal_encoding('EUC-JP');

を入れてみてください。

ただし、webサーバーにphp-mbstringが入っている必要があります。

◎質問者からの返答

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

ご指摘をヒントに、解決することができました。

問題は、mbstring.http_outputとmbstring.internal_encoding の設定が、

SJISになっていたことでした。

設定は行ったと思っていましたが、サーバが使用している設定ファイルが、

/etc/php.iniではなく、/etc/php5/php.iniだったために、設定がSJISのままになっていた様です。

ご回答して頂いた皆様、ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ