文字化けしないよう文字コード違うページフォーム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 チェックをしている。

このページをシェアする

関連タグ

関連記事

IEからEdgeへの強制転送設定を個人サイトに適応してもらった話

ことの発端 / IE から Edge への転送とは / IE 非互換リストへの追加申請手順 / 申請時の流れ / まとめ / 参考

[Edge] Internet Explorer(IEモード)を有効にする方法

IE を取り巻く背景 / IE モードとは / IE モードを有効にする / 関連

[CSS] 究極のIE対策

条件付きコメント / メディアクエリを利用して IE10〜IE11 に対応する

`.sr-only`のような非表示スタイルとSEOの関係性の調査

非表示要素はブラックハット SEO ではないのか

2GB 以上のファイルをダウンロードする際の問題点について

2GB 以上のファイルのダウンロードに失敗する / ファイルの保存先

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

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