Was bedeutet %20 in einer URL: Die technische Erklärung
In URLs sind Leerzeichen als direkte Zeichen nicht erlaubt. Das Web verwendet einen Standard namens Percent-Encoding (auch als URL-Encoding bekannt), um Sonderzeichen darzustellen.
%20 ist die hexadezimale Darstellung des ASCII-Leerzeichens.
Warum 20?
- Leerzeichen in ASCII = Dezimal 32
- 32 im Hexadezimalsystem = 20
- Percent-Encoding-Format = % + Hexwert
Also:
Leerzeichen → ASCII 32 → Hex 20 → %20
Das ist die gesamte Logik dahinter, warum %20 ein Leerzeichen ist.
Beispiel
Originaltext:
https://example.com/my page.html
Kodierte Version:
https://example.com/my%20page.html
Browser wandeln Leerzeichen automatisch in das %20 URL-Encode-Format um, damit die Adresse gültig ist.
URL Encoding %20: Warum es existiert
URLs müssen strengen Standards folgen, die in RFC 3986 definiert sind. Nur bestimmte Zeichen sind direkt erlaubt. Andere müssen kodiert werden.
Zeichen, die typischerweise kodiert werden müssen:
- Leerzeichen
- ?
- &
- =
- %
- Nicht-ASCII-Zeichen (z. B. é, ü)
Beispiel: Query-Parameter
Unkodiert (ungültig):
https://example.com/search?q=red shoes
Kodiert:
https://example.com/search?q=red%20shoes
Ohne Kodierung kann der Browser die URL-Struktur nicht korrekt interpretieren.
%20 in Webadressen im Vergleich zu anderen kodierten Zeichen
Während %20 am häufigsten vorkommt, werden viele andere Zeichen auf ähnliche Weise kodiert.
|
Charakter |
ASCII (Dez) |
Hex |
Verschlüsselt |
|
Raum |
32 |
20 |
%20 |
|
! |
33 |
21 |
%21 |
|
" |
34 |
22 |
%22 |
|
# |
35 |
23 |
%23 |
|
& |
38 |
26 |
%26 |
|
/ |
47 |
2F |
%2F |
Das Verständnis dieser Tabelle hilft beim manuellen Debuggen von URLs.
Bedeutung von %20 in URL-Pfaden vs. Query-Strings
Das Verhalten der Kodierung unterscheidet sich leicht je nachdem, wo sie erscheint.
1. Pfadsegment
https://example.com/files/My%20Document.pdf
Hier steht %20 für ein tatsächliches Leerzeichen im Dateinamen.
2. Query-Parameter
https://example.com/search?keyword=machine%20learning
Hier steht es für ein Leerzeichen innerhalb eines Query-Werts.
3. Fragment-Identifikatoren
https://example.com/page#Section%202
Auch Anker können kodierte Leerzeichen enthalten.
HTTP %20 und Server-Interpretation
Server dekodieren percent-kodierte Werte automatisch, bevor sie Anfragen verarbeiten.
Zum Beispiel:
GET /products/Red%20Shoes HTTP/1.1
Der Server erhält:
/products/Red Shoes
Dieser Dekodierungsschritt erfolgt:
- Der Browser kodiert unsichere Zeichen.
- Die HTTP-Anfrage wird gesendet.
- Der Server dekodiert.
- Die Anwendung verarbeitet die lesbare Zeichenkette.
Deshalb sehen Entwickler %20 innerhalb der Anwendungslogik selten, außer wenn rohe URLs protokolliert werden.
Praktische Entwicklerbeispiele
Beispiel 1: JavaScript-Kodierung
encodeURIComponent(“red shoes”);
Ausgabe:
red%20shoes
Beispiel 2: Dekodierung in JavaScript
decodeURIComponent(“red%20shoes”);
Output:
red shoes
Beispiel 3: Python
import urllib.parse
encoded = urllib.parse.quote(“data science”)
print(encoded)
Ausgabe:
data%20science
Entschlüsselung:
urllib.parse.unquote("data%20science")
Wann %20 nicht verwendet werden sollte
In Query-Strings können Leerzeichen manchmal als + erscheinen.
Beispiel:
https://example.com/search?q=red+shoes
Bei Formularübermittlungen mit application/x-www-form-urlencoded wird ein Leerzeichen als + kodiert, nicht als %20.
Wichtiger Unterschied:
- %20 → standardmäßige Percent-Encoding-Kodierung
- → Sonderfall für Formulardaten
Diese Unterscheidung ist beim Backend-Parsing wichtig.
SEO und %20 in URLs
Suchmaschinen können kodierte Leerzeichen korrekt verarbeiten. Best Practices empfehlen jedoch:
- Leerzeichen in URLs vollständig vermeiden.
- Stattdessen Bindestriche (-) verwenden.
Bevorzugt:
https://example.com/red-shoes
Statt:
https://example.com/red%20shoes
Warum?
- Sauberere Struktur
- Bessere Lesbarkeit
- Weniger Kodierungsschritte
- Geringeres Risiko von Copy-Paste-Fehlern
Häufige Fehler und Debugging-Tipps
1. Doppelte Kodierung
Wrong:
red%2520shoes
Hier steht %25 für %, was bedeutet, dass der String zweimal kodiert wurde.
2. Manuelle URL-Erstellung
Vermeiden Sie es, URLs durch String-Konkatenation zu erstellen:
“/search?q=” + userInput
Stattdessen:
“/search?q=” + encodeURIComponent(userInput)
3. Falsch interpretierte kodierte Schrägstriche
%2F steht für /. Wenn es falsch dekodiert wird, kann sich die Pfadhierarchie ändern.
Zusammenfassung: Warum %20 in URLs erscheint
Kurz zusammengefasst:
- %20 ist ein Leerzeichen
- Es ist Teil des Percent-Encoding
- Es sorgt dafür, dass URLs gültig und maschinenlesbar bleiben
- Browser kodieren automatisch
- Server dekodieren automatisch
- Es ist für eine sichere HTTP-Übertragung erforderlich
Das Verständnis von Kodierung ist besonders wichtig bei:
- Debugging von APIs
- Arbeit mit Redirects
- Umgang mit nutzergenerierten Inhalten
- Verwaltung von Datei-Downloads
- Optimierung von URLs für SEO
Wann immer Sie %20 in einer Webadresse sehen, bedeutet das einfach, dass ein Leerzeichen für die Übertragung im Web sicher kodiert wurde.
Moderne Frameworks übernehmen dies automatisch, aber zu verstehen, wie es funktioniert, hilft, Kodierungsfehler, Sicherheitsprobleme und fehlerhafte Anfragen in Produktionssystemen zu vermeiden.