[PHP-users 16237]Re: EUC⇒Shift-JISでのPOST送信での文字化け解決法ありませんか?
ALPHA
alpha @ alpha.ne.jp
2003年 6月 25日 (水) 14:04:42 JST
新地です。
> 問題と現状をまとめると以下のようになります。
>
> test.php は文字コード: EUC 表示されている文字コード
> ↓ POST
> test2.php は文字コード: Shift-JIS (test.phpからのPOST送信直後はEUCで
> 表示をしてしまいます)
> ↓ POST
> 外の決済システムのサーバー(文字コードはShift-JISのみを受け付ける:文字コー
> ド Shift-JIS)
> (Shift-JISで書かれたtest2.phpが EUCの文字化けの状態でPOST送信され
> ると
> データを正常に受け取ってくれないのです)
>
> ・ 解決法 test2.php がtest.phpからそのままPOSTによってデータを受け取り表
> 示されるときにブラウザでShift-JISで表示をしてくれれば解決です。 しかし
> HTML Headerの中に文字コード Shift-JISの指定をしても EUCファイルからPOST送
> 信されるので、EUCで表示してしまうのです。
>
> ・ その他の解決法: test2.phpをEUCで記述し、 外の決済システムのサーバーに
> Shift-JISでデータをPOST送信できればいいのですが、このようなことはできるんで
> しょうか?
>
> すみませんがどうぞ宜しく御願いいたします。
>
> 植山周志
>
ブラウザーがSJISを自動的にEUCに変換してしまうということですね・・・。
すいません。わたしこそ勘違いしておりました。
一度別のページをかまして構わないなら
HTML出力する前に
$a = mb_convert_encoding($_POST[a], "SJIS", "EUC-JP" );
header("Location: 外部サーバURL?a=$a");
で飛ばしてしまえばブラウザーを介さないのでSJIS送信可能ではないでしょうか?
単純にデータを渡すだけならこれでいけると思います。
問題は外部サーバがPOSTしか受け付けないなら
この方法は無理なので重松さんがおっしゃっているように
fsockopenなどを使ってsocket通信しかないと思います。
PHP-users メーリングリストの案内