[PHP-users 27089] Re: PHP5.0.5 での文字化けを解決したい
KT
tokunaga.k @ gmail.com
2005年 10月 5日 (水) 13:54:56 JST
徳一です。
On 10/5/05, Etsuo SUMIYA <sumiya-e @ ube-shinko.co.jp> wrote:
> どっちが悪いのかわからないのであれば,phpの機能を使わない,ただの
> htmlファイルをEUCで作って表示してみては?
<?php ?> を含まず、php の echo() で日本語を吐き出させない場合、つまり
html の <body> タグの中に日本語を直接書いた場合を試してみました。
----
<body>
日本語
</body>
----
文字化けしました。
となると、apache2 が書き換えている可能性が高いのですが、php ファイルが
http サーバと php でどう処理されているのか、気になります。
前述の作業履歴の中にないのですが、コマンドラインでの処理したらどうなる
のか、という試行があります。その結果、CLI 版 php で前述の ja.php を読
み込むと、
(1) オプション -c で php.ini を指定した場合
$ cd /cygdrive/c/Apache2/htdocs
$ php -c /cygdrive/c/windows/php.ini -f ja.php
<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=euc-jp" />
<title></title>
</head>
<body>
ニ・ワク・ </body>
</html>
という出力になります。charset は置換されていないし、「日本語」も出
力されているようです。この出力を cygwin bash ターミナルの上で表示
できるように nkf -s にパイプで渡してやると、文字化けしているように
見える「日本語」も表示されました。
(2) php.ini を指定しなかった場合
$ php -f ja.php
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-type" content=
"text/html; charset=us-ascii">
<title></title>
</head>
<body>
ÆüËܸì
</body>
</html>
charset の置換が起こっています。しかも、html のインデントも崩れて
います。php が別の初期ファイルで起動され、その設定に従って処理して
いるようです。では、どこのどの php.ini なんでしょう。
また、同じことが apache2 を使った場合も起きているならば、apache2
で使われている php5 は phpinfo() で確認する限り、上記(1)と同じ設定
済みの c:/windows/php.ini を読み込むと表示されているにもかかわらず、
何故 (1) と同じように出力しないのか。
apache2 で使う php5 が設定済みの php.ini を本当に使っているのか、疑問
になっています。他に何か気になる点はありませんでしょうか。
PHP-users メーリングリストの案内