Text oder URL einfügen und die Richtung wählen – der Encoder wandelt Sonderzeichen in Prozentcodierung um und zurück.
Eine Internetadresse darf nur einen begrenzten Zeichenvorrat enthalten: Buchstaben, Ziffern und eine Handvoll Sonderzeichen. Alles andere – Leerzeichen, Umlaute, kaufmännisches Und, Rautezeichen – muss umgeschrieben werden. Das Verfahren heißt Prozentcodierung und ist in RFC 3986 festgelegt: Jedes betroffene Zeichen wird in seine UTF-8-Bytes zerlegt, und jedes Byte erscheint als Prozentzeichen gefolgt von zwei Hexadezimalstellen.
Ein Leerzeichen hat den Bytewert 32, hexadezimal 20 – daraus wird %20. Das Fragezeichen mit Wert 63 wird zu %3F, das kaufmännische Und zu %26. Umlaute belegen in UTF-8 zwei Bytes: Aus „ü" wird %C3%BC, aus „ß" wird %C3%9F. Emoji brauchen sogar vier Bytes und damit zwölf Zeichen in der codierten Form. Genau deshalb wachsen codierte Adressen mit vielen Sonderzeichen erheblich – der Rechner zeigt den Zuwachs direkt an.
Das ist die wichtigste Entscheidung, und sie wird oft falsch getroffen. Beim Codieren einer vollständigen Adresse müssen Doppelpunkt, Schrägstrich, Fragezeichen und Und-Zeichen erhalten bleiben – sie bilden die Struktur der URL. Beim Codieren eines einzelnen Parameterwerts ist genau das Gegenteil richtig: Enthält der Wert selbst ein Und-Zeichen oder ein Gleichheitszeichen, würde die URL sonst zerbrechen, weil der Server dort einen neuen Parameter vermutet. Ein Suchbegriff wie „Zins & Tilgung" muss deshalb vollständig codiert werden, die Adresse drumherum nicht.
In Formulardaten, die als application/x-www-form-urlencoded gesendet werden, steht das Pluszeichen für ein Leerzeichen – ein Erbe aus der Frühzeit des Web. In modernen URLs gilt dagegen %20. Beide Schreibweisen begegnen nebeneinander, und beim Decodieren muss man wissen, welche gemeint ist. Der Rechner behandelt ein Pluszeichen beim Decodieren als Leerzeichen, weil das der häufigere Fall ist. Wer ein echtes Pluszeichen übertragen will – etwa in einer Telefonnummer oder E-Mail-Adresse mit Alias – muss es als %2B codieren, sonst verschwindet es unterwegs.
Der Standard teilt den Zeichenvorrat in zwei Gruppen. Unreserviert sind Buchstaben, Ziffern sowie Bindestrich, Punkt, Unterstrich und Tilde – sie dürfen immer unverändert stehen und sollten nie codiert werden, weil eine codierte und eine uncodierte Variante sonst als unterschiedliche Adressen gelten. Reserviert sind Zeichen mit struktureller Bedeutung: Doppelpunkt, Schrägstrich, Fragezeichen, Rautezeichen, eckige Klammern, kaufmännisches Und, Gleichheitszeichen, Plus, Komma und Semikolon. Sie müssen codiert werden, sobald sie als Inhalt und nicht als Trennzeichen gemeint sind. Alle übrigen Zeichen – Leerzeichen, Anführungszeichen, spitze Klammern, Umlaute – sind in URLs schlicht unzulässig und immer zu codieren.
Der Domainteil einer Adresse folgt anderen Regeln als der Pfad. Umlautdomains werden nicht prozentcodiert, sondern nach dem Punycode-Verfahren umgeschrieben: Aus „müller.de" wird „xn--mller-kva.de". Browser zeigen die lesbare Form an und übersetzen im Hintergrund. Wer eine Adresse programmatisch zusammensetzt, sollte Domain und Pfad deshalb getrennt behandeln. Verwandte Werkzeuge sind der Base64-Umrechner und der JSON-Formatter.