[PHP-users 16227]EUC⇒Shift-JISでのPOST送信での文字化け解決法ありませんか?

SHoe-G Ueyama shoe-g @ pro.co.jp
2003年 6月 25日 (水) 12:59:23 JST


皆様、

こんにちは、どうしてもうまくいかないのでお知恵を拝借できればと思い記載させて
いただきました。

通常のPOSTでフォームを作成しているのですが、どうもうまくいかず、最後の処理が
できません。
ファイルの流れは以下です。

test.php は文字コード: EUC
    ↓
test2.php は文字コード: Shift-JIS 
    ↓
外の決済システムのサーバー(文字コードはShift-JISのみを受け付ける:文字コー
ド Shift-JIS)

test.php と test2.phpは1つのサーバーで簡潔しています。
test2.php の次に 外のサーバーでクレジットカード決済に行うためShift-JISで
データをPOSTで送る必要があります。
サイト全体の文字コードはEUCで作成されているが、最後の決済画面の部分は
Shift-JISで吐き出す必要があります。ヘッダーでShift-JISを指定してもブラウザー
の表示がEUCで表示されるため、そのまま、外の決済サーバーにデータを送っても
データをShift-JISと判断してくれません。

--------test.php---------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=euc-jp">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM action =test2.php method="post">
<INPUT size="20" type="text" name="a"><BR>
<INPUT type="submit" name="ok" value="ok"></FORM>
</BODY>
</HTML>

-------test2.php----------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM action =test2.php method="post">

<INPUT size="20" type="text" name="a"><BR>
<INPUT type="submit" name="ok" value="ok">
<? print mb_convert_encoding($a, "SJIS", "EUC-JP"  ); ?>
</FORM>

</body>
</html>

// このファイルの出力が文字化けをする。
// このまま外部サーバーにPOST送信すると、うまくいかない。
// ブラウザーで文字コードをShift-JISに変換してPOST送信するとうまくいく

----------------- 外部サーバー --------------------
SHIFT-JISで受取ると決済プログラムが正常に動作します。
EUCだとうまくいきません。
-----------------

test2.php で POSTするデータがShift-JISになっていれば大丈夫なのですが
test.2.phpと 外部サーバーの間に一つファイルをかませてうまくいけばいいのです
が

皆さんもこのような問題ありましたか?
すみませんがご教授願います。

植山周志



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