[PHP-users 21826]Windows環境:postデータ文字エンコーディング変換 動作せず。

Seto seto @ 1kg.jp
2004年 5月 25日 (火) 02:09:53 JST


Setoです。

Windows2000SP4 に
Apache1.3.29+PHP-4.3.6をインストールしたんですが
FORMタグenctype が multipart/form-data の
HTMLフォーム画面(Shift_JIS)からPOSTしたとき
POSTデータの自動文字エンコーディング変換が
期待通り動作してくれません(変換されません)。

# SJISからEUC-JPに変換してくれると期待してます。
# もちろんFORMタグ ディフォルトenctypeでは正常に変換されてます。


マニュアル http://www.php.net/manual/ja/ref.mbstring.php には
------------------------------------------------------------------
注意: PHP 4.3.3以降、HTMLフォームのenctypeが multipart/form-dataに
設定され、かつ、 php.iniにおいて mbstring.encoding_translationにOnが
指定されて いる場合、 POSTデータの変数とアップロードされたファイルの
名前の 文字エンコーディングは、内部文字エンコーディングに変換されま
す。 ただし、HTMLフォームのnameに指定した文字は変換されません。 
------------------------------------------------------------------
とありますし
php.iniを同じように設定した
Linux(Redhat9)+Apache1.3.29+PHP-4.3.6
では 同じスクリプトでテストすると
期待通りSJISからEUC-JPに自動変換されています。

あとどこか確認すべき個所ありましたなら教えてください。


php.ini(Windows環境)の設定
-------------------------------
default_mimetype = "text/html"
default_charset = "EUC-JP"
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.encoding_translation = On
mbstring.detect_order = autoでも同じ
-------------------------------


テストスクリプトtest.php
-------------------------------
<?php
header("Content-Type: text/html;charset=Shift_JIS");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
</HEAD>
<BODY>
<FORM enctype="multipart/form-data" method="post" action="test.php">
<input type="text" name="intex">
<input type="submit">
</FORM>
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
print_r($_POST);
}
?>
</BODY>
</HTML>
-------------------------------
ここまで。

以上よろしくお願いいたします。
Junya Seto



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