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