任意の文字コードをformから送信する

   

うちのサイトは何か文字化けの記事ばっかり書いてる気がする・・・(笑)
今回はフォームで検索したときに、日本語をいれたら結果キーワードが文字化けしたのでその修正。

フォームを設置する際に設置するページと結果を表示するページで文字コードが異なる場合、
検索結果が文字化けになるのでフォームタグの中にaccept-charsetを入れてあげることで解決する。

<form method="POST" action="" name="form" target="_blank" accept-charset="utf-8">

上のサンプルは検索結果ページがutf-8の場合。ついでに検索結果を表示するときに別窓で表示したかったのでtarget指定もいれておいた。

IE用に修正

IEでaccept-charsetをサポートしていない。
IEェ…!!
ので、探してみたところ送信ボタンをクリックしたときにjavascriptで文字コードを指定して渡す方法がベターらしい。

<input type="button" value="送信" onclick="buff=document.charset;document.charset='utf-8';document.f1.submit();document.charset=buff;">

今回は検索結果を別窓で表示するのですが、もし元のページにもどって…という操作の場合、
IEでは、戻るボタンを押したら元のページが文字化けを起こすそうなのでその対応も必要。IEェ…!!

参考:ページの文字コードとは違う任意の文字コードをformから送信する方法

 - (X)HTML