文字化けしないように文字コードの違うページへフォームをPOST/GETする方法
1 min read
UTF-8
からShift_JIS
のページへ POST する場合の方法。(GET でも同じ方法で OK)
POST 先の文字コードは、以下でSHIT_JIS
となっている箇所を変えれば対応できる。
方法
IE 以外(Chrome / Firefox)
<form name="form1" method="POST" accept-charset="Shift_JIS"></form>
accept-charset
を指定する。
IE 用
IE は accept-charset
が効かないので、以下のような JS が必要になる。
document.forms.form1.addEventListener("submit", set_sjis_charset);
function set_sjis_charset(e) {
var ua = window.navigator.userAgent.toLowerCase();
var isIE =
ua.indexOf("msie") > -1 ||
ua.indexOf("trident/7.0") > -1 ||
ua.indexOf("edge") > -1;
if (isIE) {
e.preventDefault();
this.removeEventListener("submit", set_sjis_charset);
var tmp = document.charset;
document.charset = "Shift_JIS";
this.submit();
document.charset = tmp;
}
}
キャラセットを変更するのは IE だけで良いので IE チェックをしている。