Sonderzeichen in URLs kodieren – Percent-Encoding nach RFC 3986.
URLs dürfen nur eine begrenzte Auswahl ASCII-Zeichen enthalten. Sonderzeichen, Umlaute oder Leerzeichen müssen kodiert werden, damit sie in URLs übertragen werden können. Dieses Verfahren heißt Percent-Encoding (definiert in RFC 3986).
:/?#[]@ bleiben erhalten (Struktur der URL).%20 wird zu Leerzeichen.:/?#[]@&=+$, werden kodiert. Für Query-Parameter!| Situation | Methode |
|---|---|
| Komplette URL kodieren | encodeURI (Modus "Kodieren") |
Query-Parameter (z.B. ?q=...) | encodeURIComponent (Modus "Component") |
| Form-Daten (POST) | encodeURIComponent |
| URL aus Datenbank dekodieren | decodeURIComponent (Modus "Dekodieren") |
| Zeichen | Kodiert | Bedeutung |
|---|---|---|
(Leerzeichen) | %20 | Trennzeichen |
! | %21 | Ausrufezeichen |
" | %22 | Anführungszeichen |
# | %23 | Fragment-Marker |
% | %25 | Percent-Marker selbst |
& | %26 | Parameter-Trenner |
+ | %2B | oft für Leerzeichen |
? | %3F | Query-Beginn |
@ | %40 | E-Mail-Trenner |
ä | %C3%A4 | UTF-8 Umlaut |
ö | %C3%B6 | UTF-8 Umlaut |
ü | %C3%BC | UTF-8 Umlaut |
ß | %C3%9F | UTF-8 Eszett |
encodeURI behandelt den Input als komplette URL und lässt Strukturzeichen (:/?#[]@!$&'()*+,;=) unkodiert. encodeURIComponent kodiert ALLE Sonderzeichen außer A-Za-z0-9-_.~. Für Query-Parameter immer encodeURIComponent verwenden!
Ja! Umlaute werden zuerst als UTF-8 in Bytes umgewandelt und dann jedes Byte als %XX kodiert. Beispiel: "ä" → UTF-8 (0xC3 0xA4) → %C3%A4
Nein! Alle Konvertierungen erfolgen direkt in deinem Browser.