Formで別ドメインにテキストを送信する際、送信元と送信先の文字コードが異なる場合、そのまま構築してテスト送信をしてみると文字化けしてしまいます。
このような場合は、Fromタグにaccept-charset=”送信先の文字コード” を追加して対応すれば大丈夫です。
送信元がutf-8で送信先がShift_JISの場合だと
▼下記のような形ですね
<form method="POST" action="https://sample.com" accept-charset="Shift_JIS">
Chrome、 FireFox、 Safari等であればこれで対応完了です。
しかし、IE、Edgeはこれを無視してそのままだと文字化けが起こってしまいます。
IEまたお前か・・・
最終的には javascriptで解決しました。
<input type="submit" value="送信する" onclick="document.charset='SHIFT-JIS';">
さきほどは<form>タグに対して追記しましたが、こちらはsummit属性を持つ送信ボタンに対してonclick=”document.charset=’SHIFT-JIS’;”を追記します。
IE自体はEdgeに乗り換えるようマイクロソフト公式ブログでも出ているようですがまだ一定のシェアがあるのでWindows7のサポート終了と共に即滅ぶ訳ではなそうでこの辺りも今後調べていこうと思います。
IEに変わって出てきたEdge、
これもIEよりマシとは言え、罠がいっぱいで今後のIEのポジションに収まりそうですね。
WEBディレクター、デザイナー、フロントエンドエンジニア、投資家、会社オーナー
2007年に同志と起業、2009年に法人化、2018年にHira's.netを設立。
WEBデザイン、コーディング、ディレクター等WEB制作全般に幅広く携わっています。