[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 メーリングリストの案内