Node.jsでURLエンコードを行う
URLエンコードとは?
URI(URL)の構成要素において使用できない文字を表現するのに用いられるのがパーセントエンコードです。パーセントエンコードはURLエンコードと呼ばれることも多いです。 パーセントエンコードは1バイトの文字を3つの文字に変換します(2バイトの文字の場合には1バイトずつ変換するため6つの文字に変換されます)。 この3
URLエンコードを行うにはencodeURIComponent
関数を使用します。
第1引数に文字列を指定します。
返り値としてURLエンコードされた文字列が得られます。
しかし、この関数は一部のURLエンコードしなければならない文字をエンコードしないため、その文字に関しては自分でエンコードしなければなりません。
具体的には、下の文字に関しては自分でエンコードしなければなりません。
!
'
(
)
*
したがって、下のような関数を作成し、使用します。
function urlencode (str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
return '%' + c.charCodeAt(0).toString(16).toUpperCase();
});
}
サンプルコード1
url-encode.js
function urlencode (str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
return '%' + c.charCodeAt(0).toString(16).toUpperCase();
});
}
console.log(urlencode('0123456789'));
console.log(urlencode('abcdefghijklmnopqrstuvwxyz'));
console.log(urlencode('ABCDEFGHIJKLMNOPQRSTUVWXYZ'));
console.log(urlencode('\t\n\r'));
console.log(urlencode(' '));
console.log(urlencode('!"#$%&\'()*+,-./'));
console.log(urlencode(':;<=>?@'));
console.log(urlencode('[\]^_`'));
console.log(urlencode('{|}~'));
実行結果
C:\work\node>node url-encode.js
0123456789
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%09%0A%0D
%20
%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F
%3A%3B%3C%3D%3E%3F%40
%5B%5D%5E_%60
%7B%7C%7D~
関連

スポンサーリンク