Warum URLs kodiert werden müssen
Eine URL kann nur einen begrenzten Satz von ASCII-Zeichen enthalten. Leerzeichen, akzentuierte Zeichen (é, ü, ñ), nicht-lateinische Schriften (Arabisch, Chinesisch, Japanisch) und reservierte Satzzeichen sind in URLs so nicht erlaubt. Prozent-Kodierung konvertiert unsichere Zeichen: jedes Zeichen wird durch `%` gefolgt von zwei Hexadezimalziffern ersetzt.
Ohne Kodierung würde eine URL wie `https://example.com/suche?q=Café au lait` brechen. Korrekt kodiert: `https://example.com/suche?q=Caf%C3%A9%20au%20lait`.
encodeURI vs encodeURIComponent
`encodeURI()` kodiert eine vollständige URL und bewahrt Zeichen mit struktureller Bedeutung in einer URL. Verwende dies, wenn du eine vollständige URL hast und sie nur für die Übertragung sicher machen möchtest.
`encodeURIComponent()` ist aggressiver — es kodiert alles außer Buchstaben, Ziffern und wenigen Sonderzeichen. Verwende es für einzelne Query-Parameter-Werte oder Pfadsegmente.
Häufige Kodierungsfallen
Doppelkodierung: Eine bereits kodierte Zeichenkette zu kodieren, erzeugt `%2520` statt `%20`. Immer zuerst dekodieren, dann bei Bedarf neu kodieren. Plus vs. Leerzeichen: In Query-Strings steht `+` manchmal für ein Leerzeichen. In URL-Pfaden müssen Leerzeichen immer `%20` sein.