クエリ文字列の構造とパースガイド
URL エンコーディングガイド
クエリ文字列は URL で ? の後に続く部分で、ページに追加情報を渡します。https://example.com/search?q=本&page=2 では q=本&page=2 がクエリ文字列です。
構成ルール
クエリ文字列は キー=値 のペアを & でつないだ構造です。
?— クエリ文字列の開始を示す=— キーと値を区切る&— 複数のペアを区切る#— クエリ文字列の終わり(その後は fragment/ハッシュ)
値に特殊文字があるとき
値の中に & や = が入ると区切り文字と紛らわしくなるため、値は必ず encodeURIComponent でエンコードしなければなりません。たとえば検索語が a&b なら、q=a%26b と入れることでパラメータがひとつに保たれます。スペースはエンコード方式によって %20 または + で表現され、パースするときは + をスペースに戻して解釈する場合が多くあります。
安全なパース
ブラウザにはクエリ文字列を安全に扱う URLSearchParams が内蔵されています。自分で & によって分割する前にこの API を使えば、エンコード・重複キー・空の値といった例外を自動的に処理してくれます。
このサイトのクエリパーサータブは、貼り付けた URL を構成要素に分解し、各パラメータの元の値とデコードされた値を並べて表示します。