テストフォーム
| UFT-8 | URLエンコードで送信 | UFT-8で保存されたHTMLのフォームから送信、受信を行います。 |
| Shift-JIS | (A)URLエンコードで送信 | 加工をせずにフォームのデータをそのまま送信します。 受信したデータはunescape()しています。decodeURIを使うとエラーが発生します。 |
| (B)escapeして送信 | 送信直前にテキストフィールドのデータをescape()で書き換えてから、送信しています。 |
|
| (C)encodeURIして送信 | 送信直前にテキストフィールドのデータをencodeURIして、変数にURLエンコードと同じ文字列を入れています。 送信にはsubmitを使わず、変数の文字列を直接URLに出力しています。 受信したデータはdecodeURI()しています。 |
|
| (D)仮想フォームの送信 | JavaScriptを使ったフォームの送信(エンコード処理なし) |
エンコードの違い
| 表示例: | |
| URLエンコード(ShiftJIS): | textfield=%83e%83X%83g |
| URLエンコード(UFT-8): | textfield=%E3%83%86%E3%82%B9%E3%83%88 |
| escape(): | textfield=%u30C6%u30B9%u30C8 |
| encodeURI(): | textfield=%E3%83%86%E3%82%B9%E3%83%88 |
文字コード
| 「テ」の文字コード番号 | JIS:2546 Shift-JIS:8365 区点コード:00538 ユニコード:U+306C |
Shift-JISの場合、「テ」を1バイト毎に分けてから、それぞれをエンコードしています。エンコードは英数字及び記号の一部はそのままなので、
英数字にない上位を「%83」とし、下位は「%65」にせず「e」として認識するため、「%83e」となっています。
参照:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1