Anleitung

URL Kodierung: Vollständige Anleitung

URL-Kodierung (auch Prozent-Kodierung genannt) ist essentiell für die Übertragung von Daten in URLs. Das Verständnis, wann und wie Zeichen kodiert werden müssen, verhindert defekte Links, Sicherheitslücken und Fehler bei der Datenübertragung.

Warum URL-Kodierung?

URLs wurden für ASCII-Text konzipiert und haben reservierte Zeichen mit besonderen Bedeutungen. Das ?-Zeichen startet Query-Strings, & trennt Parameter, = weist Werte zu und # markiert Fragmente. Wenn Ihre Daten diese Zeichen enthalten, müssen sie kodiert werden, um Fehlinterpretation zu vermeiden. Stellen Sie sich eine Suche nach "Tom & Jerry" vor. Ohne Kodierung würde ?q=Tom & Jerry das & als Parametertrenner behandeln, was die Abfrage bricht. Richtig kodiert: ?q=Tom%20%26%20Jerry behandelt den gesamten String als einen Wert. Nicht-ASCII-Zeichen müssen ebenfalls kodiert werden. URLs können nur ASCII enthalten. Internationale Zeichen wie ü, 漢, или müssen zu Prozent-kodierten Bytes werden, damit sie in URLs erscheinen können. Leerzeichen sind ein häufiger Spezialfall. Sie können als %20 oder manchmal als + (aber nur in Query-Strings) kodiert werden. Die Inkonsistenz verursacht häufige Bugs. Verwenden Sie %20 für zuverlässigste Kompatibilität. Sicherheitsauswirkungen sind bedeutsam. Nicht kodierte Benutzereingaben in URLs können XSS-Schwachstellen, Injection-Angriffe und URL-Manipulation ermöglichen. Kodieren Sie immer benutzergenerierte Inhalte, die in URLs platziert werden.

Wie URL-Kodierung funktioniert

URL-Kodierung ersetzt unsichere Zeichen durch Prozentzeichen gefolgt von zwei hexadezimalen Ziffern. Das Leerzeichen (ASCII 32, hex 20) wird zu %20. Das &-Zeichen (ASCII 38, hex 26) wird zu %26. Für UTF-8-Zeichen ist der Prozess: Konvertieren Sie das Zeichen zu UTF-8-Bytes, dann Prozent-kodieren Sie jedes Byte. Das ü-Zeichen ist UTF-8-Bytes C3 BC, also wird es zu %C3%BC. Das chinesische 中 ist UTF-8 E4 B8 AD, also wird es zu %E4%B8%AD. Sichere Zeichen, die keine Kodierung benötigen, sind A-Z, a-z, 0-9 und diese: - _ . ~ (obwohl einige Implementierungen diese auch kodieren). Reservierte Zeichen, die kodiert werden müssen, wenn sie wörtlich sind, umfassen: ! # $ & ' ( ) * + , / : ; = ? @ [ ]. Diese haben besondere URL-Bedeutungen, also erfordert ihre wörtliche Verwendung Kodierung. Doppelkodierung ist ein häufiger Fehler. Das Kodieren eines bereits kodierten Strings macht %20 zu %2520. Dekodieren Sie vor dem Neukodieren oder tracken Sie den Kodierungsstatus sorgfältig.

JavaScript URL-Funktionen

JavaScript bietet mehrere URL-Kodierungsfunktionen mit unterschiedlichen Verhaltensweisen. Das Wählen der falschen bricht URLs oder exponiert Sicherheitslücken. encodeURIComponent() ist das, was Sie normalerweise wollen. Es kodiert alles außer A-Z a-z 0-9 - _ . ! ~ * ' ( ). Verwenden Sie es für Parameterwerte: '?name=' + encodeURIComponent(userInput). encodeURI() kodiert für vollständige URLs und lässt reservierte Zeichen wie : / ? & unkodiert. Verwenden Sie es für ganze URLs: encodeURI('https://example.com/pfad?q=test'). Aber es wird Parameterwerte, die reservierte Zeichen enthalten, nicht richtig behandeln. Der kritische Unterschied: encodeURI('a&b') gibt 'a&b' zurück (& bleibt). encodeURIComponent('a&b') gibt 'a%26b' zurück (& wird kodiert). Für die meisten Anwendungsfälle ist encodeURIComponent korrekt für Werte. Zum Dekodieren verwenden Sie decodeURIComponent() für einzelne Werte und decodeURI() für vollständige URLs. Legacy-Funktionen escape() und unescape() sind veraltet und behandeln Unicode nicht richtig. Verwenden Sie sie niemals in neuem Code.

Tool ausprobieren

URL Encoder/Decoder

URL Encoder/Decoder

Mehr erfahren

FAQ

URL Encoder/Decoder

FAQ