- 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=”�” />
</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 に書き換えているというわけ。
力技だがこちらはうまくいった。
けど、スマートじゃないよ。。
いい方法ないものか。。。
もしかしたら文法間違っているかもなので、あしからず。
おしまい。
- Newer: CentOS5.3でSubversion1.6.6をインストール。
- Older: Railsのpartialに引数を渡す。
Comments:0
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