URL kodieren & dekodieren
Machen Sie Text URL-tauglich oder verwandeln Sie Sequenzen wie %20 zurück in lesbare Zeichen. Das Tool nutzt die browsereigenen Funktionen encodeURIComponent, encodeURI und decodeURIComponent, listet Query-Parameter in einer Tabelle auf und sendet nichts an einen Server.
0 Zeichen · 0 Wörter · 0 Zeilen
0 Zeichen · 0 Wörter · 0 Zeilen
Läuft komplett in diesem Browser-Tab. Ihr Text wird weder hochgeladen noch gespeichert.
Was jede Funktion maskiert
Mit den Browser-Funktionen selbst berechnet. encodeURIComponent lässt Buchstaben, Ziffern und diese Zeichen unverändert: ! ' ( ) * - . _ ~
| Zeichen | encodeURIComponent | encodeURI |
|---|---|---|
(Leerzeichen) | %20 | %20 |
! | ! | ! |
" | %22 | %22 |
# | %23 | # |
$ | %24 | $ |
% | %25 | %25 |
& | %26 | & |
' | ' | ' |
( | ( | ( |
) | ) | ) |
* | * | * |
+ | %2B | + |
, | %2C | , |
/ | %2F | / |
: | %3A | : |
; | %3B | ; |
= | %3D | = |
? | %3F | ? |
@ | %40 | @ |
[ | %5B | %5B |
] | %5D | %5D |
{ | %7B | %7B |
} | %7D | %7D |
| | %7C | %7C |
\ | %5C | %5C |
^ | %5E | %5E |
` | %60 | %60 |
< | %3C | %3C |
> | %3E | %3E |
~ | ~ | ~ |
- | - | - |
_ | _ | _ |
. | . | . |
é | %C3%A9 | %C3%A9 |
€ | %E2%82%AC | %E2%82%AC |
😀 | %F0%9F%98%80 | %F0%9F%98%80 |
Prozentkodierung und die reservierten Zeichen nach RFC 3986
Eine URL darf nur eine begrenzte Auswahl an ASCII-Zeichen enthalten. RFC 3986, die Spezifikation für die URI-Syntax von 2005, teilt sie in zwei Gruppen ein. Die nicht reservierten Zeichen, A–Z, a–z, 0–9 und die vier Zeichen - . _ ~, müssen nie kodiert werden. Die reservierten Zeichen haben eine Aufgabe: Die allgemeinen Trennzeichen : / ? # [ ] @ trennen Schema, Host, Pfad, Query und Fragment, und die Unter-Trennzeichen ! $ & ' ( ) * + , ; = trennen Elemente innerhalb davon, so wie & und = in einem Query-String. Alles andere sowie jedes reservierte Zeichen, das als normaler Inhalt dient, muss prozentkodiert werden.
Die Prozentkodierung schreibt ein Byte als % gefolgt von zwei Hexadezimalziffern. Text wird zuerst in UTF-8 umgewandelt: Ein Leerzeichen wird zu %20, ein é (zwei Bytes) zu %C3%A9 und ein Emoji zu vier %XX-Gruppen. Deshalb landet die Suche nach „café & bar“ als caf%C3%A9%20%26%20bar in einem Link: Das & wird kodiert, damit der Server es nicht als Beginn eines neuen Parameters liest.
encodeURIComponent, encodeURI und Dekodierung
encodeURIComponent ist die richtige Wahl für ein einzelnes Teilstück, etwa einen Query-Wert, ein Pfadsegment oder eine als Parameter übergebene Weiterleitungs-URL. Es maskiert alles außer den nicht reservierten Zeichen und ! ' ( ) *, die JavaScript aus historischen Gründen unverändert lässt. encodeURI (ganze URL) geht davon aus, dass die Eingabe bereits eine vollständige Adresse ist, und lässt die reservierten Zeichen unangetastet, sodass bei https://example.com/a b?q=1 nur das Leerzeichen kodiert wird. encodeURI auf einen Parameterwert anzuwenden ist ein klassischer Fehler: Ein & oder # im Wert bliebe erhalten und würde die URL zerstören.
Dekodieren kehrt beide Funktionen um. HTML-Formulare, die per GET gesendet werden, nutzen das ältere Format application/x-www-form-urlencoded, in dem ein Leerzeichen als + statt als %20 geschrieben wird. Lassen Sie dafür Treat + as a space angehakt und entfernen Sie den Haken, wenn ein echtes Pluszeichen wichtig ist, etwa in einer Telefonnummer. Enthält die Eingabe ein % ohne zwei folgende Hexadezimalziffern oder Bytes, die kein gültiges UTF-8 sind, schlägt das Dekodieren mit einer klaren Meldung fehl, statt zu raten. Enthält der Text einen Query-String, erscheinen seine Parameter dekodiert in einer Tabelle unter dem Tool. Für Binärdaten in URLs ist Base64url die übliche Alternative.
Häufig gestellte Fragen
- Wird ein Leerzeichen in einer URL als %20 oder als Pluszeichen geschrieben?
- In Pfaden und nach RFC 3986 ist ein Leerzeichen %20. Die +-Form steht nur in Query-Strings für ein Leerzeichen, die so kodiert sind, wie HTML-Formulare es tun. %20 ist daher überall die sichere Wahl.
- Warum steht in meiner URL plötzlich %2520?
- Sie wurde doppelt kodiert. Im ersten Durchgang wurde ein Leerzeichen zu %20, im zweiten wurde das % selbst als %25 kodiert. Dekodieren Sie einmal, um die zusätzliche Ebene rückgängig zu machen, und kodieren Sie Werte in Ihrem Code nur an einer Stelle.
- Welche Zeichen müssen nie prozentkodiert werden?
- Die nicht reservierten Zeichen nach RFC 3986: die Buchstaben A bis Z in Groß- und Kleinschreibung, die Ziffern 0 bis 9 sowie Bindestrich, Punkt, Unterstrich und Tilde.
- Darf eine URL Umlaute und andere Sonderbuchstaben ohne Kodierung enthalten?
- Browser zeigen sie an, aber bei der Übertragung wird jedes Nicht-ASCII-Zeichen in Pfad oder Query als prozentkodiertes UTF-8 gesendet. Domainnamen nutzen ein eigenes System, Punycode, das sie in xn--Labels umwandelt.
- Warum meldet die Dekodierung eine fehlerhafte Sequenz?
- Der Text enthält ein % ohne zwei folgende Hexadezimalziffern, etwa ein einzelnes „100%“, oder die Bytes ergeben ungültiges UTF-8. Kodieren Sie einzelne %-Zeichen vor dem Dekodieren als %25.