No.457


【JavaScript】URLエンコード

ふたつのURLencode関数の違い、意外と知られていない?

 JavascriptにはURLエンコードを行うメソッドがふたつある。
 encodeURI()encodeURIComponent()だ。

 この Component ありなしの違いは意外と知られてないらしく、意図せずプログラム内で使っている人も多いらしい。というか、今まさにそれでバグってるプログラムをレビューしている(笑

 というわけでコピペ説明用にふたつの違いをメモ。

 なお、エンコードがふたつあるということはデコードも当然ふたつある。あわせて記載しておく。


encodeURI()decodeURI()

encodeURI()
decodeURI()

 URL全体をエンコード・デコードする用途で使う。
 URLに記述される記号、: / ? & = などはエンコードされない。

hoge=fu\ga

 は下記になる。

hoge=fu%5Cga

encodeURIComponent()decodeURIComponent()

encodeURIComponent()
decodeURIComponent()

 引き数の値を個別にエンコード・デコードする用途で使う。componentの意味そのままな感じの関数。
 URLに記述される記号、: / ? & = もエンコードされる。

hoge=fu\ga

 は下記になる。

hoge%3Dfu%5Cga