URLで使用すべきでない文字を%xx(xxは16進数)を使い符号化することをパーセントエンコーディングという。パーセントエンコーディングはURLエンコードとも言う。ただフォームデータをポストする際の符号化(application/x-www-form-urlencoded)もURLエンコードと言うので本記事ではURLの符号化はパーセントエンコード、フォームデータの符号化はURLエンコードと書く。パーセントエンコーディングとURLエンコードは半角スペースの処理が異なる。パーセントエンコーディングは%20に符号化する。URLエンコードは+に符号化する。
具体的な符号化
» Percent-encoding – Wikipedia, the free encyclopedia
// パーセントエンコーディング
// encodeURIComponent
var string1 = encodeURIComponent(' '); // 半角スペースをパーセントエンコーディング(UTF-8)
string1 === '%20'; // true
var string2 = encodeURIComponent('あ'); // 「あ」をパーセントエンコーディング(UTF-8)
string2 === '%E3%81%82'; // true
URLエンコード(application/x-www-form-urlencoded)は半角スペースを%20ではなく+へ符号化する。URLエンコード用のカスタム関数。
» XMLHttpRequestによるPOSTリクエスト
// ■ www-form-urlencodedのURLエンコーディング
function formURLEncoded(obj) {
var params = [];
for (var key in obj) {
var value = obj[key];
// パーセントエンコーディングしてからさらに半角スペース%20を+へ置換
var param = encodeURIComponent(key).replace(/%20/g, '+')
+ '='
+ encodeURIComponent(value).replace(/%20/g, '+');
params.push(param);
}
return params.join('&');
}
var data = {
key1: 'テスト',
key2: ' ' // 半角スペース
}
formURLEncoded(data); // key1=%E3%83%86%E3%82%B9%E3%83%88&key2=+
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。