パーセントエンコーディングとは
URLに使用できない文字(日本語、スペース、特殊記号など)を%XXの形式に変換する仕組みです。RFC 3986で規定されています。
encodeURIComponent vs encodeURI の違い
encodeURIComponentはすべての特殊文字をエンコードするため、クエリパラメータの値に適しています。encodeURIはスキーム(http://)やパス区切り(/)をそのまま保持するため、URL全体のエンコードに使います。
マルチバイト文字(UTF-8)の扱い
日本語などのマルチバイト文字はUTF-8でバイト列に変換され、各バイトが%XX形式でエンコードされます。例えば「あ」は%E3%81%82となります。
よくあるエラーと対処法
「%」の後に有効な16進数2桁がない場合や、不正なUTF-8バイト列のデコードはエラーになります。エンコード済みURLの一部だけをコピーした場合に発生しやすいです。