[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 メーリングリストの案内