Home > Server > IEのFormでaccept-charsetが無視される。

IEのFormでaccept-charsetが無視される。

  • 2009-10-17 (土) 18:03
  • Server

UTF-8のページからShift_JISで文字コードを扱うシステムへPOSTすると文字化けしてしまった。

UTF-8で送信していることが原因っぽいね。

W3C標準ではサーバ側の文字コードを教えるため?に accept-charset という属性が用意されているらしいが、IEは無視することが分かった。

メジャーなのに非常に困るw

解決方法としては2つある。

(うまくいったのは2番目に書いてある方法なので、忙しい人は下のほうから参照するといいっす。)

一つは input に hidden でダミーの値を渡すこと。

value を � とかって設定するといいみたい。

なぜかは分からないが、認識出来ない文字が入ると accept-charset の値を参照するらしい。

すごい仕様だな、オイ。

<form action=”hogehoge.html” method=”post” accept-charset=”Shift_JIS”>

<input type=”text” name=”hoge1″ />

<input type=”submit” />

<input type=”hidden”  name=”dummy” value=”&#65533;” />

</form>

試してみたけど、うまくいかねーw

そこで2つ目の方法を試す。

submit ボタンに onclick 属性を追加して、 document.charset=’Shift_JIS’ とか設定しちゃう。

<form id=”form1″ action=”hogehoge.html” method=”post” accept-charset=”Shift_JIS”>

<input type=”text” name=”hoge1″ />

<input type=”submit” onclick=”document.charset=’Shift_JIS’; document.form1.submit(); ” />

</form>

つまり、送信する前にページの charset をJavascript で Shift_JIS に書き換えているというわけ。

力技だがこちらはうまくいった。

けど、スマートじゃないよ。。

いい方法ないものか。。。

もしかしたら文法間違っているかもなので、あしからず。

おしまい。


Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.terut.net/wp-trackback.php?p=146
Listed below are links to weblogs that reference
IEのFormでaccept-charsetが無視される。 from Action*3

Home > Server > IEのFormでaccept-charsetが無視される。

Search
Feeds
Meta

Return to page top