URL kodieren / dekodieren
Kodiere oder dekodiere URLs und Abfrageparameter per Prozent, komponentensicherer Modus und Voll-URI-Modus.
URL kodieren / dekodieren wird geladen… Wenn nichts passiert, aktiviere JavaScript.
Die Prozentkodierung, gemeinhin URL-Kodierung genannt, ist der in RFC 3986 definierte Mechanismus, um beliebige Zeichen sicher innerhalb eines Uniform Resource Identifier darzustellen. Das Adressierungssystem des Internets wurde um ASCII herum entworfen, sodass jedes Zeichen außerhalb einer kleinen sicheren Menge (Leerzeichen, akzentuierte Buchstaben, Satzzeichen, Emoji oder rohe Binärdaten) durch ein Prozentzeichen ersetzt werden muss, gefolgt von zwei Hexadezimalziffern, die den Bytewert des Zeichens in UTF-8 darstellen. Das Schema ist Teil des Webs, seit Tim Berners-Lee 1990 am CERN die URLs definierte, und wurde in RFC 1738 formell standardisiert, später 2005 durch RFC 3986 abgelöst.
Beispiele
hello world & co=1
hello%20world%20%26%20co%3D1
Prozentkodierung (encodeURIComponent): Das Leerzeichen wird zu %20.
hello world & co=1
hello+world+%26+co%3D1
Formularkodierung (application/x-www-form-urlencoded): Das Leerzeichen wird zu +.
Häufig gestellte Fragen
Werden meine Daten auf einen Server hochgeladen?
Welche Zeichen gelten als 'sicher' und bleiben unkodiert?
Was ist der Unterschied zwischen den beiden Modi?
Warum wird ein Leerzeichen manchmal zu + und manchmal zu %20?
Gibt es Zeichen, die selbst kodiert nie in einer URL erscheinen dürfen?
Verarbeitet dieses Tool Unicode und Emoji korrekt?
Kann ich damit eine doppelt kodierte URL dekodieren?
Ist URL-Kodierung dasselbe wie HTML-Entity-Kodierung?
Was ist der Unterschied zwischen einem URI und einer URL?
Warum erzeugt das Kodieren einer bereits kodierten Zeichenkette unleserliche Ausgabe?
Über URL kodieren / dekodieren
Die URL-Kodierung ist unvermeidlich, sobald du Webadressen programmatisch erstellst oder analysierst. Abfragezeichenketten-Werte mit Leerzeichen, kaufmännischem Und oder Gleichheitszeichen würden die Parameterauswertung zerstören, blieben sie unkodiert. Formularübermittlungen verwenden standardmäßig application/x-www-form-urlencoded, das alles per Prozent kodiert und Leerzeichen in + umwandelt. REST-API-Clients müssen Pfadsegmente mit Schrägstrichen oder Fragezeichen kodieren, damit der Server sie nicht als Strukturzeichen interpretiert. Webhook-Nutzlasten, OAuth-Weiterleitungs-URIs und Deeplinks beruhen alle auf sorgfältiger Kodierung und Dekodierung, um Daten ohne Mehrdeutigkeit zu übergeben.
Dieses Tool erledigt die Prozentkodierung und -dekodierung vollständig in deinem Browser. Es bietet zwei Modi passend zu den beiden Standard-JavaScript-Funktionen. Der Komponentenmodus (entspricht encodeURIComponent) ist für einzelne Werte gedacht (einen Suchbegriff, einen Dateinamen, einen OAuth-Parameter) und escapt alles außer den nicht reservierten Zeichen A-Z, a-z, 0-9, Bindestrich, Unterstrich, Punkt und Tilde. Der Voll-URI-Modus (entspricht encodeURI) bewahrt die Strukturzeichen einer vollständigen URL (Doppelpunkt, Schrägstrich, Fragezeichen, Rautezeichen, kaufmännisches Und, Gleichheitszeichen) und ist nützlich, wenn du eine URL normalisieren willst, ohne ihre Struktur zu zerstören. Da alles lokal läuft, wird keine Eingabe je an einen Server gesendet.
Ein häufiger Fehler ist, eine ganze URL mit encodeURIComponent zu kodieren: Das escapt die Doppelpunkte und Schrägstriche und erzeugt eine kaputte Adresse. Verwende den Komponentenmodus nur für einzelne Werte, bevor du sie zu einer URL zusammensetzt. Umgekehrt führt das Vergessen, Werte mit & oder = innerhalb von Abfragezeichenketten zu kodieren, dazu, dass Parameter am empfangenden Ende stillschweigend aufgeteilt oder zusammengeführt werden. Beachte außerdem, dass das Zeichen + nur innerhalb von application/x-www-form-urlencoded-Körpern ein Leerzeichen bedeutet; in Pfadsegmenten muss ein wörtliches + als %2B prozentkodiert werden.
Woher die Prozentkodierung ihren Namen hat
Die Prozentkodierung verdankt ihren Namen dem wörtlichen Prozentzeichen (%), das sie als Escape-Zeichen verwendet. Als Tim Berners-Lee 1990 am CERN die URL-Syntax definierte, brauchte er eine Möglichkeit, beliebige Bytes darzustellen, die in ASCII-Text eindeutig wäre. Er wählte %, weil es druckbar war, in Bezeichnern selten verwendet wurde und sich optisch abhob, was kodierte Sequenzen auf einen Blick erkennbar machte.
Die ursprüngliche URL-Spezifikation (RFC 1738, 1994) verlangte bereits die Prozentkodierung unsicherer Zeichen, doch verschiedene Systeme waren uneins darüber, welche Zeichen 'unsicher' waren und wie mit Unicode umzugehen sei. Es dauerte bis 2005 und bis RFC 3986, bis ein endgültiger Standard entstand, zusammen mit einem Begleitdokument (RFC 3987), das IRIs (Internationalized Resource Identifiers) definierte, die Unicode-Zeichen direkt in der Syntax erlauben.
Heute liefert praktisch jede Programmiersprache eine URL-Kodierfunktion in ihrer Standardbibliothek, doch feine Unterschiede bleiben: PHPs urlencode() kodiert Leerzeichen als +, Pythons urllib.parse.quote() verwendet %20, und JavaScripts encodeURIComponent() folgt RFC 3986. Diese Vielfalt ist der Grund, warum sprachübergreifende API-Integrationen manchmal mit Kodierungs-Unstimmigkeiten kämpfen: Dasselbe Zeichen kann je nach serialisierender Bibliothek völlig anders aussehen.