文字化けしないよう文字コード違うページフォームPOST/GETする方法

2 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 チェックをしている。

このページをシェアする

Related Articles

クレジットカード情報入力フォームのベストプラクティスを考える

背景 / クレジットカード情報を入力するフォームの仕様 / 適切なマークアップをする / デモ

[HTML] meta http-equiv="X-UA-Compatible"の記述は不要

TL;DR / meta http-equiv="X-UA-Compatible" とは / 今後はどうするのか / 参考 / Footnotes

`<input type="range">`のstepを可変にする方法

仕様 / 完成デモ / 実装 / 参考

[HTML] meta robots の noodp, noydir 定義は SEO として不要

TL;DR / noodp,noydir と歴史 / 今後はどうするのか / Footnotes