勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

異なる文字コード間でform送信する

      2014/05/23

formの送り手がUTF-8で受け手がEUC-JP、
なんとかしてjavascriptjQueryエンコードして
送りたいけどこれどうすんの? となったのでメモ。

■参考サイト
http://www.webbibo.com/blog/htmlcss/accept-charset.html
http://wiki.mesolabo.com/?%E3%83%A1%E3%82%BD%E7%9F%A5%E6%81%B5%2FHTML%2F%E9%81%95%E3%81%86%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7POST%E3%81%99%E3%82%8B

■ソース
<html>
<head>
<script>
function validate () { //※1
buff = document.charset;
document.charset = 'EUC-JP';
document.form_name.submit();
document.charset = buff;
}
function search_back(){ //※2
var isMSIE = /*@cc_on!@*/false;    //IE判別
if (isMSIE) {
if(document.charset != "utf-8"){ //文字コードが変換されているかチェック
document.charset = "utf-8"; //変換されていたら指定の文字コードに戻す
location.reload();
}
}
}
</script>
</head>
<body onLoad="return search_back();">
<form method="POST" action="./index.php" accept-charset="EUC-JP" name="form_name"><!--※3-->
<input type="text" name="abc">
<input type="button" value="submit" onClick="return validate();">
</form>
</body>
</html>

■その他
※1でbuffに現在の文字コードを入れて、文字コードEUC-JPを設定し
フォーム内容をサブミットする。その後、元の文字コードに戻す。

※2でフォーム送信後、ブラウザの戻る対策として
IEの場合は文字コードUTF-8に戻っていない場合は
戻した上でページリロード。

※3はフォームの送信時に文字コードセット。
ただ、対応ブラウザが少ないとのこと。

あと、/*@cc_on!@*/って何なの? と思って調べると、
JScriptを使えるブラウザだけ使うらしい。よく分からない。

http://blog.clouder.jp/archives/001005.html

 - javascript

  関連記事

javascript_logo_unofficial-300x300
JavaScriptでdisplay:none/blockの切り替え

jQueryだとhide/show使うか、もしくは toggleだけでいいけどJ ...

mzl.qobqfuxq
GoogleMapでメインカラーを変更する方法

GoogleMapAPIを用いたMAPでカラー変更をしたかった。カラーコードの指 ...

110126-HTML5_Logo
formでdisplay:none;にしてても送信される

formで特定の部分をdisplay:none;で非表示にしてても 内容は送信さ ...

javascript_logo_unofficial-300x300
JavaScriptでURLのクエリを取得する

やりたかった事はJavaScriptでGETのクエリを取得。 ■ソース var ...

javascript_logo_unofficial-300x300
javascriptでブラウザ判別&ページ遷移

var userAgent = window.navigator.userAge ...

javascript_logo_unofficial-300x300
JavaScriptで多次元連想配列

JavaScriptで多次元の配列を作る際にいつも迷ってしまうのでメモ。 ■こう ...

javascript_logo_unofficial-300x300
ページのリロード、ページの戻る

ブラウザのリロードと同じようなボタンを作成してほしいとの 要望があって色々あった ...

javascript_logo_unofficial-300x300
JavaScriptで全角半角を判別の上で文字数カウントを行う

やりたかった事は「全角5文字・半角10文字以内の入力フォーム」 みたいなもの。 ...

javascript_logo_unofficial-300x300
JavaScriptでUNIXタイムスタンプ取得

UNIXタイムスタンプを用いた際、 年月日からすぐUNIXタイムスタンプを出した ...

javascript_logo_unofficial-300x300
JavaScriptで小数の計算(decimal.js)

JavaScriptで小数の計算をすると値がずれることがあった。調べてみるとJa ...