こんにちは。
職人見習いの高嶋です。

FORM HTMLについての記事になります。
難しい内容ではないのですが、今後の為に記事として残しておきます。

ある案件の開発で、自サイトはUTF-8で構築していたのですが、某社のクレジットカード決済APIを使うにあたり、Shift_JISのPOST送信で接続する必要がありました。

>

勿論、力技で対応することも可能ですが、これが意外と面倒です。
GETでの送信を許してくれているなら、プログラム内でShift_JISに変換とURIエンコードをかけて
某社APIに投げれば済むのですが、POST送信限定というところがまた頭を悩ませられます。

当たり前の話ですが、POSTでリダイレクトすることは出来ません。
UTF-8で統一してサイトを構築しているのに、接続ページだけShift_JISで書くのもいい気分がしません。

そこで、調べてみたら下記のようにありました。

accept-charsetに渡したい文字コードを指定すると、その文字コードで送信します。
しかし、これで解決するならば良いのですが、まだ問題があります。

まず、formタグにそのままaccept-charsetを記述しても、IEの場合は無視されます。
その為、JavaScriptを駆使して以下のように記述するとIEでも認識することができます。







送信ボタンを押した時にJavaScript側で強制的にフォームの文字コードをShift_JISに設定します。

しかし、ここでまた問題があり、遷移先のページからブラウザbackすると、

元ページが文字化けしてしまいます。

結論として、文字コードの異なる他システムとの連携はウインドウを新しく立ち上げるようにします。

※この記事は、なかの人(piro556)が書いています。