[PHP-users 27080] PHP5.0.5 での文字化けを解決したい

tokunaga kazunari tokunaga.k @ gmail.com
2005年 10月 5日 (水) 03:15:58 JST


はじめまして、徳一といいます。

apache2 + php5 の組み合わせをテストするために、apache から php ファイ
ル (下記 ja.php) を呼び出すと、ブラウザ上に「日本語」と一言表示する、
簡単なテストをやっています。凄く簡単にしているつもりですが文字化けして
丸1日悩んでいます。何が原因かお分かりの方は教えていただけませんでしょ
うか。以下に私の作業環境と作業履歴を明示します。

【作業環境】
PHP	: 5.0.5 zip package, Windows Binaries
Path	: c:/php5
使用	: DSO
Apache	: 2.0.54, Win32 Binary (MSI Installer)
Path	: c:/Apache2
OS	: WindowsXP HomeEdition (Version 5.1 SP2)
DB	: MySQL 4.0.23-nt
Script	: 以下参照、文字コードは EUC-JP
Path	: c:/Apache2/htdocs/ja.php
エラー	: なし

--- ja.php -----------------------------------------------------------
1: <html lang="ja">
2:   <head>
3:     <meta http-equiv="Content-type" content="text/html; charset=euc-jp" />
4:     <title></title>
5:   </head>
6:   <body>
7:     <?php echo "日本語"; ?>
8:   </body>
9: </html>
----------------------------------------------------------------------
※左端は行番号。


【作業履歴 (試行錯誤)】
(1) Apache2 の導入
   a) c:/Apache2 にインストール

   b) http.conf に以下の2行を追加
      ----
      LoadModule php5_module "c:/php5/php5apache2.dll"
      AddType application/x-httpd-php .php
      ----

(2) PHP5 の導入
    a) c:/php5 にインストール

    b) 以下のファイルをそれぞれコピー
       + php.ini-recommended -> c:/windows/php.ini
       + php5ts.dll -> c:/windows/php5ts.dll
       + libmysql.dll -> c:/windows/system32/libmysql.dll

    c) php 内部と http 出力をそれぞれ EUC-JP とするように php.ini を変更。
       + output_buffering	= Off
       + output_handler		= mb_output_handler
       + implicit_flush		= On
       + default_charset	= "EUC-JP"
       + extension_dir		= "c:/php5/ext"
       + extension		= php_mbstring.dll
       + extension		= php_mysql.dll
       + extension		= php_tidy.dll
       + mbstring.language	= Japanese
       + mbstring.internal_encoding = EUC-JP
       + mbstring.http_input	= auto
       + mbstring.http_output	= EUC-JP
       + mbstring.encoding_translation = On
       + mbstring.detect_order	= auto
       + mbstring.substitute_character = none;
       + tidy.clean_output	= On

(3) Path に c:/php5/ext;c:/php5 を追加した。

(4) URL を http://localhost:8080/ja.php として Web ブラウザで ja.php
    を呼び出したところ、「日本語」が文字化けして表示された。

(5) ブラウザでソースを見たところ Content-Type の charset が us-ascii
    に変更されて出力されていた。ソースを見ると、<meta> タグの
    "content=" の直後で改行されており、"text/html; charset=us-ascii"
    が次の行に書き出されていた。まるで apache もしくは php が処理して
    いる最中に書き換えたような感である。


以上が、私が行ないました作業の履歴です。原因に関する推測や何かお気付き
の点がありましたら、お教え下さい。宜しくお願いします。

--
徳一


PHP-users メーリングリストの案内