URL Encode / Decode

Text prozentkodieren für die sichere Verwendung in einer URL, oder eine kodierte URL wieder in lesbaren Text zurückverwandeln — beide Richtungen, live während der Eingabe.

1.048 Aufrufe

Funktionsweise

Eine URL kann nur ein kleines Alphabet sicher transportieren: Buchstaben, Ziffern und die vier nicht-reservierten Symbole - _ . ~. Alles andere wird als %XX-Triplett neu geschrieben, wobei XX der hexadezimale Wert des Bytes des Zeichens ist — dies ist die RFC-3986-Prozentkodierung. Zeichen, die eine URL strukturieren (? # / : @ & =, die „reservierte" Menge), werden ebenfalls kodiert, wenn sie innerhalb eines Werts statt als Trennzeichen auftauchen, da ein wörtliches & innerhalb eines Abfragewerts sonst als Beginn des nächsten Parameters gelesen würde.

Nicht-ASCII-Text wird Byte für Byte kodiert, nicht Zeichen für Zeichen: Das Tool wandelt Ihre Zeichenfolge zuerst in UTF-8 um und kodiert dann jedes resultierende Byte hexadezimal. Der türkische Buchstabe „ç" besteht aus zwei UTF-8-Bytes (0xC3 0xA7) und wird daher zu zwei Prozentblöcken, %C3%A7 — nicht zu einem einzigen Code. Ein konkretes Beispiel: Die Kodierung von İstanbul çayı & simit ergibt %C4%B0stanbul%20%C3%A7ay%C4%B1%20%26%20simit. Beachten Sie, dass das Leerzeichen zu %20 wird, das reservierte & zu %26, und jeder Buchstabe mit Akzent zu seiner eigenen mehrbytigen Sequenz expandiert.

In der Praxis zählt dieser Unterschied vor allem beim manuellen Zusammensetzen von Anfragen: das Einfügen einer Webhook-URL mit einem Abfragewert, den Ihnen jemand geschickt hat, das Dekodieren eines Tracking-Parameters aus einer Marketing-E-Mail, oder das Herausfinden, warum ein API-Aufruf fehlschlägt, weil ein rohes & oder # unkodiert in einen Wert gerutscht ist und als Trennzeichen statt als Daten gelesen wurde. Erst den Wert zu kodieren und das Ergebnis dann in die URL-Vorlage einzusetzen, vermeidet genau diese Art von Fehler.

Wichtig zu wissen

  • %20 statt +: Die RFC-3986-Prozentkodierung verwendet für ein Leerzeichen immer %20. Die +-Konvention gehört zu einem anderen, älteren Standard — application/x-www-form-urlencoded, verwendet beim Absenden eines HTML-Formulars — und gilt nur innerhalb dieses speziellen Body-Formats, niemals innerhalb eines Pfads oder eines korrekt prozentkodierten Abfragewerts. Die beiden zu verwechseln ist eine klassische Fehlerquelle: Ein Server, der Formularkodierung erwartet, liest ein verirrtes + in einer prozentkodierten Zeichenfolge als wörtliches Pluszeichen, nicht als Leerzeichen.
  • Eine Komponente kodieren, nicht die ganze URL: Dieses Tool ist für einen einzelnen Abfragewert oder ein Pfadsegment gedacht. Die gesamte Adresse (inklusive https://) durch den Encoder zu schicken, würde auch die Schrägstriche und Doppelpunkte maskieren, die sie zu einer gültigen URL machen, und sie damit vollständig zerstören.
  • Dieselbe Engine wie Ihr Browser: Es ruft die nativen encodeURIComponent/decodeURIComponent-Funktionen des Browsers auf, sodass die Ergebnisse genau denen entsprechen, die ein echter Browser oder ein JavaScript-fetch-Aufruf liefern würde — keine Annäherung.
  • Hin- und Rückkodierung ist verlustfrei: Eine Zeichenfolge zu kodieren und das Ergebnis anschließend zu dekodieren liefert immer exakt die ursprünglichen Bytes zurück, was es leicht macht, eine von Hand vorgenommene Kodierung durch Rückdekodierung und Vergleich mit dem Quelltext zu überprüfen.
  • Nichts verlässt Ihren Browser: Kodierung und Dekodierung laufen vollständig clientseitig, sofort und ohne Upload ab.

Häufig gestellte Fragen

Warum wird ein Leerzeichen zu %20 und nicht zu +?

Prozentkodierung (RFC 3986) verwendet %20 für ein Leerzeichen; die +-Konvention ist spezifisch für das ältere, in Formulardaten verwendete Format application/x-www-form-urlencoded, nicht für die allgemeine URL-Kodierung. Dieses Tool verwendet die Standardform %20 — die beiden zu verwechseln ist eine häufige Fehlerquelle beim manuellen Erstellen von Abfragezeichenfolgen.

Kodiert es die gesamte URL oder nur einen Teil?

Es ist für die Kodierung einer einzelnen Komponente (ein Abfragewert, ein Pfadsegment) gedacht — eine gesamte URL inklusive „https://" zu kodieren, würde auch die Schrägstriche maskieren und sie zerstören; kodieren Sie also nur den Teil, der es braucht, und fügen Sie dieses Stück dann wieder in den Rest der Adresse ein.

Warum werden türkische oder akzentuierte Zeichen zu mehr als einem %XX-Block?

Weil die Kodierung auf Bytes arbeitet, nicht auf sichtbaren Zeichen. UTF-8 stellt die meisten Nicht-ASCII-Zeichen — türkisches ç, ğ, ı, ş oder Emoji — mit zwei bis vier Bytes dar, und jedes Byte erhält sein eigenes %XX-Paar. So wird „ç" zu %C3%A7 (zwei Blöcke), und ein Emoji kann sich beim Kodieren auf acht Zeichen oder mehr ausdehnen.

Was ist der Unterschied zwischen reservierten und nicht-reservierten Zeichen?

Nicht-reservierte Zeichen (Buchstaben, Ziffern, - _ . ~) sind immer sicher und müssen nie kodiert werden. Reservierte Zeichen (? # / : @ & = und einige weitere) haben eine strukturelle Bedeutung in einer URL — sie trennen den Pfad von der Abfrage oder einen Parameter vom nächsten — und werden daher nur kodiert, wenn sie als reine Daten innerhalb eines Werts erscheinen, nicht wenn sie als Trennzeichen fungieren.

Wird mein Text irgendwohin gesendet?

Nein — Kodierung und Dekodierung geschehen sofort in Ihrem Browser; nichts wird auf einen Server hochgeladen.

Kommentare

Noch keine Kommentare — schreiben Sie den ersten!

Ähnliche Tools