2016年02月23日

【JavaScript】encodeURI()とencodeURIComponent()について

JavaScruptでURL(URI)エンコードを行いたい場合、以下の関数が使えます。

encodeURI()
encodeURIComponent()
※ escape()はもはや無いものとして考えます

両者ともに使い方は簡単で、引数としてエンコードしたい値を渡すだけです。


では、この2つの関数はそれぞれ何が違うのかと言うと、エンコード対象とする値に若干差異があります。

encodeURI()は、URLにおいて特別な意味を持つ予約文字「/」「:」「&」「+」「=」などはエンコードしません。

逆にencodeURIComponent()は、URLで使用する記号をすべてエンコードします。


一見すると、「じゃあ常にencodeURIComponent()を使えばええやん」ってなるかもしれませんが、少し注意が必要です。

と言うのも、「/」「:」「&」「+」「=」を全てエンコード対象とするため、引数としてURLそのものを渡すと、URLとして使えない値が返却されてしまいます。
※「http%3A%2F%2Fwww〜〜〜」みたいな値になってしまいます



じゃあ、どうすればいいのか。



答えは簡単。



元のURLをエンコードが必要な部分とそうじゃない部分に分けて、必要な箇所にだけencodeURIComponent()を適用し、それぞれを結合したURLを利用すればいいだけです。


方法はいくらでもありますけど、単純にこれでいいと思います。




ウサコのLINEすたんぷ好評配信中!
https://store.line.me/stickershop/product/1014321/ja
posted by kinky-do at 22:30| JavaScript