URLエンコードの違いと、S-JISにおける送信時のエンコードによる違いを調べる。
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
Shift-JIS | フォームの送受信テスト | フォームおよびJavaScriptによるCGI受信フォームへの送信 |
---|---|---|
テストフォーム1 | テストフォームからCGI受信フォームへ送信(POST) | |
テストフォーム2 | テストフォームからCGI受信フォームへ送信(GET) | |
テストフォーム3 | テストフォームからHTML受信フォームへ送信 | |
テストフォーム4 | テストフォームからメールでの送信 | |
HTML受信フォーム | HTMLによる受信専用フォーム | |
CGI受信フォーム | CGIによる受信専用プログラム | |
UTF-8 | テストフォーム1 | テストフォームからCGI受信フォームへ送信(POST) |
テストフォーム2 | テストフォームからCGI受信フォームへ送信(GET) | |
テストフォーム3 | テストフォームからHTML受信フォームへ送信 | |
テストフォーム4 | テストフォームからメールでの送信 | |
HTML受信フォーム | HTMLによる受信専用フォーム | |
CGI受信フォーム | CGIによる受信専用プログラム | |
onSubmitの送信テスト | onSubmit中のユーザー関数でのエラーテスト |