[PHP-users 8290] GET メソッドでの文字化けについて

岩田大樹 php-users@php.gr.jp
Wed, 26 Jun 2002 14:18:23 +0900


始めまして。岩田と申します。

表題の通り,文字化けについての質問です。
まずは単純に入力された文字列,もしくはHIDDEN で指示された文字列をGET でPHP
に渡すだけのHtml(php ファイルとして関連付け済み)を作成しました。

===========================================================================
□■ aa.html ■□

<html>
<body>
<form action="./bb.html" method="get">
データ1:<input type="text" name="name1"><br>
データ2:<input type="hidden" name="name2" value="田中・北岡・岩田"><br>
<input type="submit" value="submit">
</form>
</body>
</html>
===========================================================================

===========================================================================
□■ bb.html ■□

<?php
print_r( $HTTP_GET_VARS );

exit;
?>
============================================================================

まず,ブラウザでaa.html を表示し,テキストボックスに「田中・北岡・岩田」と
入力してsubmit します。
bb.html でsubmit(Get でURL エンコードされた文字列の元)を見ると次のように見事に
文字化けしているのです。
なお,URL で表示されているURL エンコードされた(%1c などの文字列)をローカルにて
URL デコードしてみると正常にエンコード前の文字列にデコードされることは確認
しました。

============================================================================
Array ( [name1] => ・・セ・セ・ュッ・ヲ・具セ鯉スイ・ャ・。・ヲ・エ闖・セ [name2] => ・・セ・セ・ュッ・ヲ・具セ鯉スイ・ャ・。・ヲ・エ闖・セ ) 
============================================================================


そこで,よくあるPHP のmbstring による文字コード変換がおかしいのかと思い
「上記Html と同位」に置いてある【 .htaccess 】内の設定を見直してみました。
下記がmbstring 関連の設定です。

php_value   output_handler  mb_output_handler
php_value   mbstring.internal_encoding  EUC-JP
php_value   mbstring.http_input EUC-JP,SJIS
php_value   mbstring.http_output    EUC-JP
php_value   default_charset EUC-JP

mbstring.internal_encoding をEUC-JP にしたのでもちろんaa.html, bb.html 自体
もEUC-JP にしてあります。
出力に関してもバッファリングを行おうが行わないであろうがEUC-JP で出力
するようにしてあります。(上記の記述でバッファリングは行われているようなこと
がどこかで書いてあったので。。)

私てきにmbstring.http_input が怪しいと思っていますが,auto にしても何ら変化
がないのでますます混乱しています。

文字化けの原因がわかる方,ご助言お願いします。
PS:PHP のconfigure 時のオプションは下記の通り。

'./configure' '--enable-mbstring' '--enable-mbstr-enc-trans' '--with-pgsql=/usr/local/pgsql' '--with-mysql=/usr/local/mysql' '--with-apxs=/usr/local/apache/bin/apxs' '--enable-trans-sid'