JSON-Formatierer
JSON formatieren, prüfen und minifizieren, mit genauer Fehlerstelle.
Entwicklung
URLs und Abfrageparameter prozentkodieren und dekodieren.
URLs dürfen nach der Norm nur ASCII enthalten. Umlaute müssen deshalb kodiert werden — als UTF-8-Bytes in Prozentschreibweise.
Aus „ä" werden zwei Bytes und damit %C3%A4, aus „ß" wird %C3%9F. Eine Adresse wie /für-anfänger/ steht technisch als /f%C3%BCr-anf%C3%A4nger/ in der Anfrage; moderne Browser zeigen sie in der Adresszeile lesbar an und senden die kodierte Form.
Funktionieren tut das zuverlässig. Trotzdem ist es für Adressen selten eine gute Idee: Die kodierte Form taucht in Protokollen, Analysewerkzeugen und beim Kopieren in E-Mails auf und ist dort unleserlich. Für Slugs empfiehlt sich die Umschrift — „fuer-anfaenger" statt „für-anfänger".
Anders bei Suchbegriffen und Parameterwerten: Dort sind Umlaute normal und richtig kodiert völlig unproblematisch.
Im Domainnamen selbst gelten andere Regeln als im Pfad. Prozentkodierung ist dort nicht zulässig — stattdessen kommt Punycode zum Einsatz.
Punycode bildet Unicode-Domains auf ASCII ab, erkennbar am Präfix xn--. Aus „müller.de" wird „xn--mller-kva.de", aus „köln.de" wird „xn--kln-sna.de". Beide Schreibweisen führen zum selben Ziel.
Für .de-Domains sind Umlaute seit 2004 zugelassen und verbreitet. Zu beachten ist, dass manche ältere Systeme — insbesondere E-Mail-Adressvalidierungen und Zertifikatsprüfungen — mit der Unicode-Form nicht umgehen können und die Punycode-Schreibweise brauchen.
Ein Sicherheitsaspekt kommt dazu: Zeichen aus anderen Schriften können lateinischen täuschend ähnlich sehen. Browser zeigen deshalb bei gemischten Schriften die Punycode-Form an, um Täuschungen sichtbar zu machen.
Die häufigste Fehlerquelle ist die Wahl zwischen vollständiger und Komponenten-Kodierung.
Die vollständige Kodierung ist für eine ganze Adresse gedacht und lässt Zeichen mit Strukturbedeutung — Doppelpunkt, Schrägstrich, Fragezeichen, kaufmännisches Und — unangetastet. Die Komponenten-Kodierung ist für einen einzelnen Wert und kodiert genau diese Zeichen mit.
Der klassische Fehler: eine ganze URL als Parameterwert übergeben, ohne sie als Komponente zu kodieren. Der erste Schrägstrich beendet dann scheinbar den Wert und der Rest wird als eigener Parameter gelesen — bei Weiterleitungen nach dem Anmelden ein häufiger Defekt.
Und das Pluszeichen: In Abfrageparametern steht + historisch für ein Leerzeichen. Ein echtes Plus — etwa in einer Telefonnummer — muss als %2B geschrieben werden, sonst wird daraus beim Auslesen ein Leerzeichen.
Als UTF-8 prozentkodiert: ä wird %C3%A4. Im Domainnamen dagegen als Punycode mit dem Präfix xn--.
Eine Abbildung von Unicode-Domains auf ASCII. „köln.de" ist technisch „xn--kln-sna.de".
Weil + in Abfrageparametern für ein Leerzeichen steht. Ein echtes Plus muss %2B lauten.
Technisch geht es. Für Slugs ist die Umschrift praktischer, weil die kodierte Form in Protokollen unleserlich wird.
Zweimaliges Kodieren, sodass %20 zu %2520 wird. Beim Dekodieren bleibt dann %20 als sichtbarer Text übrig.
Nein, alles läuft in diesem Tab.