フォームの入力データをページと異なる文字コードで受け渡す方法

寝ている時の鼻づまりに悩むYu-ichiです:neko:

前回の記事で予告した通り、もう1つブラウザ依存の問題について書きたいと思います。

つい最近、フォームのページ(HTML)はUTF-8
受け渡すCGIがShift_JIS(以下SJIS)という環境での作成をする機会がありました。

SJISで作成されたページでフォームに入力し、CGIで受け取ると
そのまま入力された内容が受け取れますが
UTF-8で作成されたページでフォームに入力し、CGIで受け取ると
入力された内容が文字化けしてしまう問題がありました。

入力された内容を文字コード変換でUTF-8→SJISにしてしまえばいいのですが、
今度はCGI画面からブラウザの「戻る」ボタンをクリックするとSJISのまま戻ってしまい
ページ全体が文字化けしてしまうという状況になりました。
この問題はFirefoxでは起きず、IEで起こるようです。:kaoemoji3:

そこで、タグを使ってフォームの文字コードを変換してみました。

</p>
<p><form action="CGIのURL" accept-charset="Shift_JIS"></form></p>
<p>

フォームタグに「accept-charset」を使って送信時の文字コードを入れます。:kaomoji7:

Firefoxではすんなり文字コードを変換して受け渡してくれるのですが
やはりといいますか、IEはこの命令を無視してしまい文字化けします。:naku:

悩んだ挙句、とりあえずインラインフレームでフォーム部分を埋め込むことにしました。

埋め込む先HTML : UTF-8
埋め込むフォーム部分 : SJIS

こうすることで、とりあえず回避できましたが若干無理やり感が・・・。:naku:

使ったCGIがUTF-8に対応していればよかったのに!!:kaomoji5:

ブラウザも全部仕様を統一できないものですかね?
IE10の話題もでてきていますが、そこのところを対応して欲しいです。:kaomoji6:

トラックバックURL

コメントを残す

メールアドレスが公開されることはありません。