URLエンコードとは何か

URL に使うことができない文字列を含む時対応する文字に変換すること。

日本語が含まれる URL では、パーセントエンコーディングによって日本語から % と半角英数字の組み合わせに置き換えている。

このページも、次のように変換されている。

https://tips.weseek.co.jp/URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B

パーセントエンコーディングの他に MIMEのContent-Typeがapplication/x-www-form-urlencodedで指定される符号化方法を使用したエンコードも存在する。

encodeURI() と encodeURIComponent() の違い

encodeURI()では A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) # 以外の文字をエスケープする。

一方で encodeURIComponent() だと A-Z a-z 0-9 - _ . ! ~ * ' ( ) をエスケープする。

クエリに対して&を用いる場合は encodeURIComponent() を用いて %26 にエスケープする。
そうでなければ & が新しいフィールドの始まりとしてサーバー上で解釈されてしまう。

参考