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

Next Read

[アクセシビリティ] アイコンフォントの要素にaria-labelなどを追加するときの観点

アイコンフォントの前提 / アクセシビリティの目的 / 実装 / 関連

[アクセシビリティ] 画像に代替テキスト(alt)を追加するときの観点

概要 / img 要素の alt 属性の入れ方 / Alt 属性決定木 / 実装 / 参考リンク

[HTML] meta keywords の記述は SEO として不要

TL;DR / meta keywords とは / meta keywords と SEO との関係性 / meta keywords を記述したままで良いのか / まとめ / 参考

[HTML] メールアドレス・電話番号などの入力フォームのUXを考える

背景 / 各項目の仕様 / フォームの機能 / 参考

[Google Fonts] 読み込みのパフォーマンスを向上させる方法

display=swap / 読み込みスクリプト / 参考