あるwebサイトをリニューアル(正確には別サイトですが・・)制作していたんですが、
そのリニューアルサイトにあるお問い合わせのフォームから、
既存のサイトにあるフォームの確認ページへ飛ばすということになりました。
普通にformのactionで飛ばしていたら、文字化けが起こってしまいました。
調べてみると、
こちらがutf-8で、あちらはShift-jisでした。
それは文字化けするよね、と思いつつ、調べて、なんとか解決することができました。
以下が参考にさせていただいたサイトです。
»ページの文字コードとは違う任意の文字コードをformから送信する方法|web bibo
一番参考になったサイトがこちらです。
IEでの文字化けの解消方法も参考にさせていただきました。
»文字コードの違うサイト間のPOST送信 LUNARAVE WEBクリエイターの仕事と休息/ウェブリブログ
»JavaScript で複数の文字コードをform から送信する方法
僕が修正した実際のソースは以下になります。
◆formタグ部分
修正前
<form action="url" method="post" name="任意のname">
修正後
<form action="url" method="post" name="任意のname" accept-charset="Shift-JIS" onsubmit="return false;">
◆送信ボタン部分
修正前
<input type="submit" value="登録する">
修正後
<input type="button" value="登録する" onclick="org=document.charset; document.charset='Shift-JIS'; document.任意のname.submit(); document.charset=org;">
ちなみに、IEの文字化けとは、
フォームから違うサイトへ行き、ブラウザの戻るボタンかなにかで戻った場合、
文字コードがそのままになってしまい、文字化けしてしまうということです。
僕の場合は以下のように対処しました。
(web biboさんとほぼ同じですw)
<script> function codeChange(){ var isMSIE = /*@cc_on!@*/false; //IEかどうかを判断 if (isMSIE) { if(document.charset!="utf-8"){ //utf-8ではなかったら document.charset="utf-8"; //utf-8に変更! location.reload();//再読み込み } } } </script>
どこかでcodeChange()を呼び出せばOKです。
僕の場合は、bodyのonloadに設定しました。