URL-Kodierung: Query-Parameter und Pfade prozentkodieren

Die Prozentkodierung ersetzt unsichere Zeichen durch %XX, damit beliebiger Text sicher in einer URL stehen kann. Wisse, welche Zeichen zu escapen sind und wie man sie zurück dekodiert.

Was Prozent-Kodierung ist

Zeichen, die in einer URL nicht erlaubt sind, werden durch ein Prozentzeichen und zwei Hex-Ziffern ersetzt. Ein Leerzeichen wird zu %20 und ein Kaufmanns-Und zu %26.

encodeURIComponent vs. encodeURI

Nutze encodeURIComponent für einen einzelnen Query-Wert oder Pfadteil — es escaped /, ?, & und =. Nutze encodeURI nur auf einer ganzen URL, wo diese Zeichen strukturell sind und bleiben müssen.

Die + vs. %20-Falle

In Query-Strings kann ein Leerzeichen als + (Form-Encoding) oder als %20 erscheinen. decodeURIComponent wandelt + nicht in ein Leerzeichen um — ersetze + vor dem Dekodieren von Formulardaten.

Doppelkodierung

Wenn du einen bereits kodierten String erneut kodierst, wird %20 zu %2520. Wenn du %25-Sequenzen siehst, wurde der Wert doppelt kodiert — dekodiere wiederholt, bis er sich nicht mehr ändert.

Reservierte vs. nicht reservierte Zeichen

RFC 3986 teilt URL-Zeichen in reservierte (gen-delims wie : / ? # und sub-delims wie & =) und nicht reservierte (Buchstaben, Ziffern, - . _ ~). Nicht reservierte Zeichen müssen nie kodiert werden. Reservierte nur, wenn sie als Wert vorkommen, nicht als Teil der URL-Struktur.

Eine ganze URL vs. einen einzelnen Wert kodieren

encodeURI ist für ganze URLs gedacht: Es lässt : / ? # & = unangetastet, damit die Struktur erhalten bleibt. encodeURIComponent ist für einen einzelnen Wert, der in einen Pfadteil oder Query-Parameter geht — es escaped diese strukturellen Zeichen, damit der Wert nicht aus seinem Slot ausbricht.

Query-Strings programmatisch sicher bauen

Bevorzuge URLSearchParams (Browser) oder url.URLSearchParams (Node) gegenüber String-Konkatenation. Beide APIs kodieren Schlüssel und Werte korrekt, beherrschen Multi-Value-Parameter und vermeiden den häufigsten Fehler — einen Parameter zu vergessen, der zufällig & oder = enthält.