[PHP-users 31403] PHP5.2.0でmultipart/form-dataを使用すると文字化け

nakamura @ from.co.jp nakamura @ from.co.jp
2007年 2月 6日 (火) 14:00:55 JST


たびたびお世話になります。
中村です。

過去ログを検索してみたところ該当がなかったので、質問させて下さい。
既出でしたらすみません。

PHP5.2.0でformタグにenctype="multipart/form-data"を
指定するとPOSTしたマルチバイト文字が文字化けします。
指定しなければ文字化けしません。

確かPHP4.2.3あたりまでは自力でエンコード処理はしなくてはいけなかった記憶
はあるのですが、5.2.0も自力でエンコードしないといけなくなったのでしょうか。

ちなみにPHP5.1.6ではエンコード処理しなくても大丈夫でした。

検証ソース
----------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<?= $_POST['string'] ?>
<form method="post" enctype="multipart/form-data">
<input type="text" name="string">
<input type="submit" value="OK">
</form>
</body>
</html>
----------------------

環境
CentOS4.4
Apache2.2.3
PHP5.2.0

./configure --with-pgsql --with-apxs2=/usr/local/apache2/bin/apxs \
--enable-zend-multibyte --enable-mbstring --with-gd \
--with-zlib-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr \
--with-freetype-dir=/usr --with-ttf --enable-gd-native-ttf \
--enable-gd-jis-conv --enable-sockets --enable-simplexml --with-curl

output_buffering = On
output_handler = mb_output_handler
magic_quotes_gpc = Off
default_charset = Shift_JIS
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0

----------
中村
y-nakamura @ from.co.jp



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