URL-Kodierer
Konvertieren Sie Text in ein URL-sicheres Format, indem Sie Sonderzeichen kodieren.
Text zum Kodieren eingeben:
So verwenden Sie URL Encoder / Decoder
- 1
Text oder URL eingeben
Fügen Sie den Text, den Sie codieren möchten, oder die URL-codierte Zeichenfolge, die Sie decodieren möchten, in das Eingabefeld ein.
- 2
Codieren oder Decodieren wählen
Wählen Sie „Codieren“, um Text in ein URL-sicheres Format umzuwandeln, oder „Decodieren“, um prozentcodierten Text wieder in normalen Text zu verwandeln.
- 3
Umwandlung ausführen
Verarbeiten Sie die Eingabe, um sie sofort in die gewählte Richtung umzuwandeln.
- 4
Ergebnis kopieren
Kopieren Sie die codierte oder decodierte Ausgabe zur Verwendung in Links, Query-Strings oder API-Anfragen.
URL-Kodierung und Prozentkodierung erklärt
Was URL-Kodierung ist
Die URL-Kodierung, genauer als Prozentkodierung bezeichnet, ist der Mechanismus, der es einer URL erlaubt, Zeichen zu transportieren, die sie andernfalls nicht darstellen könnte. Eine URL ist auf eine kleine Menge von ASCII-Zeichen beschränkt, und einige dieser Zeichen haben eine besondere strukturelle Bedeutung. Die Prozentkodierung ersetzt jedes problematische Zeichen durch ein Prozentzeichen, gefolgt von den zwei hexadezimalen Ziffern seines Byte-Werts, sodass aus einem Leerzeichen %20 und aus einem Rautezeichen %23 wird.
Die Regeln sind in RFC 3986 definiert, dem Standard, der die URI-Syntax bestimmt. Das Ziel ist einfach: sicherstellen, dass ein in einer URL platzierter Wert genau wie beabsichtigt übertragen und geparst wird, ohne dass ein verirrtes Zeichen für ein Trennzeichen gehalten oder von einer Software unterwegs verworfen wird.
Reservierte versus nicht reservierte Zeichen
RFC 3986 teilt Zeichen in Gruppen ein. Die nicht reservierte Menge ist stets sicher und wird niemals kodiert: die Buchstaben A-Z und a-z, die Ziffern 0-9 sowie die vier Zeichen Bindestrich (-), Punkt (.), Unterstrich (_) und Tilde (~). Diese gehen unangetastet durch, weil sie keine strukturelle Bedeutung tragen und überall in einer URL erlaubt sind.
Die reservierte Menge ist das Satzzeichen, das die Teile einer URL begrenzt: die allgemeinen Trennzeichen : / ? # [ ] @ und die Untertrennzeichen ! $ und & ' ( ) * + , ; =. Diese Zeichen sind als Trenner erlaubt, doch wenn sie innerhalb eines Wertes statt als Trennzeichen auftauchen, müssen sie prozentkodiert werden, damit ein Parser sie nicht falsch liest. Ein Et-Zeichen innerhalb eines Query-Werts muss beispielsweise zu %26 werden, andernfalls würde es als Anfang eines neuen Parameters gelesen.
Die UTF-8-Byte-Grundlage
Die Prozentkodierung arbeitet auf Bytes, nicht direkt auf Zeichen, und moderne URLs verwenden UTF-8 als Byte-Quelle. Ein ASCII-Zeichen ist ein einzelnes Byte, sodass ein kodiertes ASCII-Zeichen eine Prozent-Escape-Sequenz ist. Ein Zeichen außerhalb von ASCII wird zunächst als seine UTF-8-Byte-Folge ausgedrückt, und dann wird jedes Byte separat prozentkodiert, was eine Escape-Sequenz pro Byte ergibt.
Der akzentuierte Buchstabe é ist das Standardbeispiel. In UTF-8 sind das die zwei Bytes 0xC3 und 0xA9, sodass er sich zu %C3%A9 prozentkodiert – zwei Escape-Sequenzen für ein sichtbares Zeichen. Das Euro-Zeichen, drei Bytes in UTF-8, wird zu %E2%82%AC. Deshalb dehnt sich nicht-lateinischer Text beim Kodieren so stark aus: Jedes Zeichen kann sich je nach seiner UTF-8-Länge in zwei, drei oder vier Prozent-Escape-Sequenzen verwandeln.
Durchgerechnetes Beispiel: einen Suchwert kodieren
Angenommen, Sie möchten die Wendung "Q&A: cats + dogs" in einen Query-String einfügen. Die Buchstaben, Ziffern und der Text rund um den Doppelpunkt bleiben als Wörter, doch die unsicheren und reservierten Zeichen werden maskiert. Aus dem Leerzeichen wird %20, aus dem Et-Zeichen wird %26, aus dem Doppelpunkt wird %3A und aus dem Pluszeichen wird %2B, weil ein wörtliches Plus andernfalls in Formulardaten als Leerzeichen gelesen würde.
Das Ergebnis ist Q%26A%3A%20cats%20%2B%20dogs. In einen Link als ?q=Q%26A%3A%20cats%20%2B%20dogs eingesetzt, dekodiert der Server es zurück zur exakten ursprünglichen Wendung. Beachten Sie, dass jedes reservierte Zeichen, das als Daten und nicht als Trennzeichen gemeint war, kodiert werden musste, um die Reise zu überstehen.
Leerzeichen: %20 versus das Pluszeichen
Leerzeichen haben eine berühmte Eigenart. Im Pfad und im größten Teil einer URL wird ein Leerzeichen als %20 kodiert. Doch im Format application/x-www-form-urlencoded, das von HTML-Formularübermittlungen und vielen Query-Strings verwendet wird, wird ein Leerzeichen traditionell als Pluszeichen (+) kodiert. Beide Konventionen sind aktiv im Gebrauch, was eine häufige Quelle der Verwirrung ist.
Die praktische Folge ist, dass ein wörtliches Pluszeichen in Daten im Formularstil selbst als %2B kodiert werden muss, damit es nicht für ein Leerzeichen gehalten wird. Beim Dekodieren müssen Sie wissen, welche Konvention die Zeichenkette erzeugt hat: Ein Plus in einem Formularwert bedeutet ein Leerzeichen, während ein Plus anderswo in der Regel ein wörtliches Plus bedeutet. Dieses Werkzeug behandelt die Standard-Prozentkodierung, sodass Ihre Werte sauber hin- und zurücklaufen.
Eine ganze URL versus einen einzelnen Wert kodieren
JavaScript stellt zwei Funktionen bereit, die zwei verschiedenen Aufgaben entsprechen, und die falsche zu wählen ist ein klassischer Fehler. encodeURI ist für eine vollständige URL gedacht: Es lässt die strukturellen Zeichen : / ? # & = intakt, damit die URL weiter funktioniert, und kodiert nur eindeutig unzulässige Zeichen wie Leerzeichen. encodeURIComponent ist für ein einzelnes Datenstück gedacht, etwa einen Query-Wert oder ein Pfadsegment: Es maskiert auch die reservierten Trennzeichen, sodass ein eingebetteter Schrägstrich oder ein Et-Zeichen die umgebende URL nicht zerstören kann.
Dieses Werkzeug führt eine Kodierung im Komponenten-Stil durch – das Verhalten von encodeURIComponent –, was die sichere Voreinstellung ist, um einen nicht vertrauenswürdigen Wert zwischen Trennzeichen einzufügen, die Sie kontrollieren: Es maskiert auch die reservierten Trennzeichen, sodass ein eingebetteter Schrägstrich oder ein Et-Zeichen die umgebende URL nicht zerstören kann. Der Kompromiss ist, dass Sie hier keine vollständige Adresse einfügen sollten, weil es auch die strukturellen Zeichen : / ? # & = maskiert und den Link verstümmelt. Um eine ganze URL zu kodieren, kodieren Sie jeden einzelnen Wert oder jedes Pfadsegment und setzen die fertige Adresse anschließend selbst zusammen.
Der Fehler der Doppelkodierung
Die Doppelkodierung ist der häufigste Prozentkodierungsfehler. Sie tritt auf, wenn bereits kodierter Text ein zweites Mal kodiert wird. Der Auslöser ist das Prozentzeichen selbst: Ein Prozentzeichen ist ein reserviertes Zeichen, sodass seine Kodierung %20 in %2520 verwandelt, weil das führende % zu %25 wird und die 20 bleibt. Ein Wert, der zweimal kodiert wurde, zeigt dem Endnutzer wörtliche Escape-Sequenzen wie %2520 an, statt des beabsichtigten Leerzeichens.
Vermeiden Sie es, indem Sie genau einmal kodieren, im Moment, in dem Sie die URL bauen, und indem Sie niemals eine Zeichenkette, die bereits Prozent-Escape-Sequenzen enthält, erneut durch den Kodierer schicken. Wenn Sie %25 gefolgt von etwas sehen, das wie eine weitere Escape-Sequenz aussieht, betrachten Sie mit ziemlicher Sicherheit doppelt kodierte Daten, und die Behebung besteht darin, sie ein zusätzliches Mal zu dekodieren oder den überflüssigen Kodierungsschritt in Ihrem Code zu entfernen.
Wo Sie es verwenden werden
Die Prozentkodierung ist überall dort, wo ein Wert innerhalb einer URL reist. Das Bauen von Query-Strings für Suche und Filter, das Erstellen von Links, die von Nutzern eingegebenen Text enthalten, das Übergeben von Parametern an REST-APIs, das Einbetten von Weiterleitungszielen innerhalb eines return_url-Parameters und das Signieren von Anfragen, die Byte für Byte übereinstimmen müssen, hängen allesamt von korrekter Kodierung ab. Webserver und Frameworks dekodieren eingehende URLs automatisch, sodass die kodierte Form in der Regel etwas ist, das Sie erzeugen und nicht lesen.
Eine nützliche Gewohnheit ist, jedes dynamische Stück beim Zusammensetzen einer URL separat zu kodieren, statt die fertige Zeichenkette in einem Durchgang zu kodieren. Das hält Ihre Trennzeichen intakt, während es jeden Wert sicher macht, und es umgeht sowohl die Unterkodierung, die Links zerstört, als auch die Doppelkodierung, die sie beschädigt.
Häufig gestellte Fragen
Was bewirkt die URL-Codierung eigentlich?
Kann dieses Tool sowohl codieren als auch decodieren?
Verarbeitet es Sonderzeichen und andere Sprachen?
Was ist der Unterschied zwischen dem Codieren einer vollständigen URL und eines einzelnen Werts?
Sind meine Daten privat und ist das Tool kostenlos?
Verwandte Tools
Machen Sie weiter mit diesen praktischen Tools