自分のページから他サイトへPOST,GETする際に、 文字コードが異なると、バケラッタになります。

まあ、そりゃ当たり前だよなー。と、思ったらそーでもない。

formタグに、Accept-Charsetっつーのが設定できるらしい。

<form method="POST" action="search.php" accept-charset="utf-8">

みたいな感じ。 これを設定すると、指定した文字コードでPOSTしてくれます。凄い。素敵。

と、思ったら、対応してるブラウザがそんなに多くないみたいで、Firefoxは大きな心で受け止めてくれますが、IEは無視します。(致命的)

で、これにも対応方法があるみたい。

例えば、UTF-8の場合は、上記に加え、

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

と、無理矢理文字コード認識させる hidden を追加する事でIEも行けるそうです。 value には対象のエンコーディングでしか使用されない帯域の文字コードを指定します。 EUC-JPの場合は、

<input type="hidden" name="dummy" value="&#xFDFE;">

で行けるようです。

又、javascriptでも回避できるようで、上記 hiddenの代わりに、submitに、

<input type="submit" onClick="buff=document.charset;
document.charset='UTF-8';document.form[0].submit();
document.charset=buff;">

と、無理矢理文字コードを変更してからsubmitするようにしても行けます。 javascript内でPOSTする場合や、bookmarkletなんかの場合はこっちになりますね。

form[0] の部分は、form にname指定があるようであれば、そっちを設定したほうが安心です。(document.my_form_name.submit())

選択肢 投票
はい 98  
いいえ 25  

作成日 2007-08-08 (水) 19:32:12

投稿者メソ | パーマリンク | トラックバック(421) | コメント(0)

Tag: html Tips



URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White