クエリ文字列の分解・組み立て
URLのパラメータを1行ずつに分解し、編集してURLへ戻します。重複キーもそのまま扱います。
URL かクエリ文字列を貼り付けてください。
分解した内容(編集できます)
補足
-
パラメータの順序と重複キーはそのまま保ちます
(
tag=a&tag=bは 2 行になり、組み立て直しても 2 つのまま残ります)。 重複していれば注意書きを出しますが、勝手に 1 つへまとめることはしません。 -
値の
+は空白として復元します(application/x-www-form-urlencodedの決まり)。組み立てるときは空白を%20にします。 -
%zzのように復元できない部分があっても、その行だけを 「書かれていたまま」にします。全体を失敗にすると、どのパラメータが原因か分かりません。 -
値の中に
=があっても、最初の=だけでキーと値に分けます。 値の改行は 1 行に収めるため\nと表示し、組み立て時に改行へ戻します。 取り違えないよう、元からある\は\\、キーの中の=は\=と表示します。 -
?の無いa=1&b=2だけを貼っても分解できます。=も&も無ければ URL とみなし、パスをキーにはしません。 -
組み立てでは
!'()*もパーセントエンコードします (encodeURIComponentは素通ししますが、クエリで意味を持つ実装があるためです)。
よくある質問
同じキーが複数あるクエリ文字列も扱えますか?
扱えます。tag=a&tag=b は2行に分解され、組み立て直しても2つのまま残ります。重複があれば注意書きを出しますが、勝手に1つへまとめることはしません。パラメータの順序もそのまま保ちます。
値の + は半角スペースに戻りますか?
戻ります。application/x-www-form-urlencoded の決まりに従い、分解するときの + は空白として復元します。組み立てるときは空白を %20 にします。
壊れたパーセントエンコードがあると全部失敗しますか?
失敗しません。%zz のように復元できない部分があっても、その行だけを「書かれていたまま」にします。全体を失敗にすると、どのパラメータが原因か分からなくなるためです。
? が無い a=1&b=2 だけでも分解できますか?
できます。クエリ文字列の断片だけを貼り付けても分解します。= も & も無い場合はURLとみなし、パスをキーとして扱うことはしません。