Prozent-Kodierung in URLs
Prozent-Kodierung ist der Mechanismus, der URLs mit Sonderzeichen, internationalen Text und Binärdaten ermöglicht.
Der Kodierungsprozess
Der Prozess ist einfach: Nimm den ASCII-Wert (oder UTF-8-Byte) und schreibe ihn als %XX wobei XX hexadezimal ist. Beispiele: Das Leerzeichen ist ASCII 32 = hex 20, also wird es zu %20. Das &-Zeichen ist ASCII 38 = hex 26, also wird es zu %26. Das %-Zeichen selbst ist ASCII 37 = hex 25, also wird es zu %25. Für Nicht-ASCII-Zeichen zuerst zu UTF-8-Bytes konvertieren. Das €-Zeichen ist UTF-8-Bytes E2 82 AC und wird zu %E2%82%AC. Das Dekodieren kehrt den Prozess um: Finde %XX-Sequenzen, konvertiere hex zu Bytes, interpretiere Bytes als UTF-8. Groß-/Kleinschreibung bei Hex-Ziffern: Sowohl %2F als auch %2f sind gültig und gleichwertig. Die Konvention bevorzugt Großbuchstaben für Konsistenz.
Häufige Fehler
Doppelkodierung passiert, wenn bereits kodierte URLs erneut kodiert werden. %20 wird zu %2520. Das passiert, wenn Sie die Kodierung beider Ebenen nicht kontrollieren. Symptom: URLs, die buchstäblich %20 anzeigen statt Leerzeichen. Unter-Kodierung lässt Zeichen unkodiert, die kodiert werden sollten. Dies bricht URLs oder erstellt Sicherheitslücken. Kodieren Sie immer Benutzereingaben vollständig. Falsche Funktion in JavaScript zu verwenden: encodeURI() vs encodeURIComponent(). Merken Sie sich: encodeURIComponent für Werte, encodeURI für ganze URLs (selten gebraucht). Leerzeichen als + zu kodieren funktioniert nur in Query-Strings und nur in einigen Kontexten. Verwenden Sie %20 für universelle Kompatibilität. Viele Systeme akzeptieren + nicht als Leerzeichen im Pfadteil. Unicode-Normalisierung wird oft vergessen. Dasselbe sichtbare Zeichen kann unterschiedliche Unicode-Darstellungen haben, die unterschiedlich kodiert werden. Normalisieren Sie vor dem Kodieren wenn Konsistenz wichtig ist.
Wann was kodiert werden muss
Query-Parameter müssen immer kodiert werden wenn sie Benutzereingaben enthalten. '?search=' + encodeURIComponent(userQuery) verhindert Injection-Angriffe und defekte URLs. URL-Pfade brauchen / unkodiert (Pfadtrenner) aber andere Sonderzeichen kodiert. Für einen Dateinamen wie 'Tom & Jerry.pdf': '/files/' + encodeURIComponent(filename). Fragment-Identifier (nach #) haben unterschiedliche Regeln. Einige Anwendungen erwarten unkodierte Fragmente, andere kodierte. Prüfen Sie die Dokumentation Ihrer Plattform. Vollständige URLs von Benutzer sollten saniert werden. Validieren Sie das Protokoll (erlauben Sie nur http/https, blockieren Sie javascript:), prüfen Sie auf Missbrauch der Kodierung und erwägen Sie URL-Validierungsbibliotheken. API-Anfragen: Die meisten HTTP-Bibliotheken behandeln die Kodierung automatisch. Wenn Sie URLs manuell bauen, kodieren Sie jeden Parameterwert individuell, dann fügen Sie sie mit & zusammen.
Tool ausprobieren
URL Encoder/Decoder