URL-Encoder
Text prozentkodieren, damit er sicher in einer URL reisen kann — vollständig in Ihrem Browser.
Läuft vollständig in Ihrem Browser. Nichts wird hochgeladen, protokolliert oder gespeichert.
Eine URL hat eine Grammatik, und Zeichen, die dazugehören — „?“, „&“, „/“, „#“, Leerzeichen — müssen maskiert werden, wenn sie Teil eines Werts und nicht Teil der Struktur sind. Diese Maskierung ist die Prozentkodierung.
Wie es funktioniert
Jedes Zeichen außerhalb der unreservierten Menge von RFC 3986 — Buchstaben, Ziffern, „-“, „.“, „_“ und „~“ — wird durch ein Prozentzeichen und den Hexadezimalwert jedes seiner UTF-8-Bytes ersetzt. Ein Leerzeichen wird %20, und ein Buchstabe mit Akzent wird zu zwei Maskierungen, weil er in UTF-8 zwei Bytes ist.
Die Formulardaten-Art gibt es, weil das Absenden von HTML-Formularen älter ist als diese Regel: Dort ist ein Leerzeichen ein „+“, und „~“ wird ebenfalls maskiert. Nehmen Sie sie, wenn Sie einen Rumpf vom Typ application/x-www-form-urlencoded bauen, und die Bestandteil-Art für alles andere.
Beispiele
| Fall | Eingabe | Ergebnis |
|---|---|---|
| Ein Suchbegriff, der in einen Query-String geht | coffee & cake | coffee%20%26%20cake |
| Derselbe Begriff als Formulardaten | coffee & cake | coffee+%26+cake |
Häufige Fragen
Soll ich damit eine ganze URL kodieren?
Nein. Eine vollständige URL zu kodieren maskiert auch das „://“ und die Trennzeichen und hinterlässt eine Zeichenkette, der kein Client folgen kann. Kodieren Sie die einzelnen Werte und setzen Sie die URL daraus zusammen.
Warum wird „!“ hier kodiert, während meine Browserkonsole es in Ruhe lässt?
JavaScripts encodeURIComponent lässt „!“, „'“, „(“, „)“ und „*“ absichtlich aus, obwohl RFC 3986 sie reserviert. Sie zu kodieren wird immer akzeptiert und vermeidet Überraschungen in strengeren Parsern, also tut dieses Tool es.
Und das „#“ in einem Fragment?
Ein wörtliches „#“ innerhalb eines Werts muss als %23 kodiert werden, sonst wird alles dahinter als Fragment gelesen und erreicht den Server nie.
Gut zu wissen
- Alles geschieht in Ihrem Browser. Was Sie einfügen, wird nicht hochgeladen, nicht protokolliert und nicht gespeichert.