いやいや、ホントにこう思います。

IEが世の中からなくなったら、

世界中で働くwebデベロッパー達の、

労働時間の3分の1は自由時間になるのではないか・・・?

これ冗談じゃなくて。まじで。マジ思う。

ってことで、謎の文字化け対策が解決。

Formを使って、テキストデータを別のドメインへ送信する時には、

送信元と送信先の文字コードを気にしないといけませんね。

文字コードが異なる場合にはこれ。

例えば、送信元がUTF8で送信先がSHIFT-JISの場合。

formタグへaccept-charset="送信先の文字コード"を入れます。

↓こんな感じ
<form method=”post” action=”http://www.test.com/” target=”_blank” accept-charset=”SHIFT-JIS”>

よし、これで解決!かと思いきや、裏切るのがIEです。

私の調査範囲内では、FireFox/chrome/safari/operaに対しては有効で、何の問題もありません。

が、しかし。IEでは文字化けます。

IEはaccept-charsetを無視して、送信元の文字コードでデータを送信してしまうそう。

ホントいちいちウザイ。死んでくれ、まじで。

私的にはaccept-charsetを入れたんだから、

php内の思わぬところで文字コード変換が行われていて、

それが悪さをしているのかと思い、上から順に3000行チェック。。。

そしてもう一度落ち着いてチェックしてみたら、無視する、だと。もう泣いちゃったよ、と。

とにかく修正方法としては、javascriptのcharsetを使って解決することが出来ました。

<input type=”submit” onclick=”document.charset=’SHIFT-JIS’;” value=”送信します” />

※ソースは全角になってるので注意。

この「onclick="document.charset='SHIFT-JIS';"」をsubmitに入れると解決しました。

いやぁまぁでもなんとか解決出来ただけましなのはわかってます。