No.457
【JavaScript】URLエンコード
ふたつのURLencode関数の違い、意外と知られていない?
JavascriptにはURLエンコードを行うメソッドがふたつある。
encodeURI()
とencodeURIComponent()
だ。
この Component
ありなしの違いは意外と知られてないらしく、意図せずプログラム内で使っている人も多いらしい。というか、今まさにそれでバグってるプログラムをレビューしている(笑
というわけでコピペ説明用にふたつの違いをメモ。
なお、エンコードがふたつあるということはデコードも当然ふたつある。あわせて記載しておく。
encodeURI()
と decodeURI()
URL全体をエンコード・デコードする用途で使う。
URLに記述される記号、:
/
?
&
=
などはエンコードされない。
hoge=fu\ga
は下記になる。
hoge=fu%5Cga
encodeURIComponent()
と decodeURIComponent()
encodeURIComponent()
decodeURIComponent()
引き数の値を個別にエンコード・デコードする用途で使う。componentの意味そのままな感じの関数。
URLに記述される記号、:
/
?
&
=
もエンコードされる。
hoge=fu\ga
は下記になる。
hoge%3Dfu%5Cga