パーセントエンコーディング(英: Percent-Encoding)とは、URIにおいて使用できない文字を使う際に行われるエンコード(一種のエスケープ)の名称である。RFC3986のSection 2.1で定義されている。一般にURLエンコードとも称される。
僕はこれまで、JavaScriptをURLエンコードを行う際はencodeURLを使っていたのですが、ひょうんなことから改めて仕様を調べる機会があったためメモを残しておきます。
encodeURI
特定の文字の実体を UTF-8 文字エンコーディングで表された 1 つ、2 つ、あるいは、3 つのエスケープシーケンスに置き換えることで、統一資源識別子 (Uniform Resource Identifier (URI)) をエンコードします。
encodeURI() - JavaScript | MDN
アルファベット、数字以外にエンコードされない文字
; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
encodeURIComponent
特定の文字の実体を、UTF-8 文字エンコーディングで表された 1 つ、2 つ、あるいは、3 つのエスケープシーケンスに置き換えることで、統一資源識別子 (Uniform Resource Identifier (URI)) の要素をエンコードします。
encodeURIComponent() - JavaScript | MDN
アルファベット、数字以外にエンコードされない文字
- _ . ! ~ * ' ( )
今後は利用シーンに応じて、encodeURIとencodeURIComponentを使いわけていきます。