URL-reservierte Zeichen erklärt
Ratgeber zur URL-Kodierung
Die URL-Spezifikation (RFC 3986) teilt Zeichen in reservierte und nicht reservierte auf. Wer diese Aufteilung kennt, weiß klar, wann kodiert werden muss und wann nicht.
Nicht reservierte Zeichen (unverändert sicher)
Buchstaben, Ziffern und die vier Symbole - _ . ~ dürfen überall ohne Kodierung erscheinen. Sie zu kodieren würde ihre Bedeutung nicht ändern, daher lässt man sie normalerweise unangetastet.
Reservierte Zeichen (strukturelle Bedeutung)
Reservierte Zeichen teilen eine URL in ihre Bestandteile. Um eines davon als wörtliche Daten zu verwenden, müssen Sie es kodieren.
:/?#[]@— trennen die großen Abschnitte (scheme, path, query, fragment usw.)!$&'()*+,;=— Unter-Trenner, insbesondere für Query-Schlüssel und -Werte
Die Grenze zwischen encodeURI und encodeURIComponent
encodeURI behält diese reservierten Zeichen bei, sodass es die Struktur einer bereits vollständigen URL nicht zerstört. encodeURIComponent kodiert sie alle, was genau das ist, was Sie wollen, wenn Sie ein Fragment wie einen einzelnen Parameter-Wert einfügen.
Verwenden Sie encodeURIComponent für einen einzelnen Wert und encodeURI für eine ganze Adresse — allein diese Regel im Kopf zu behalten vermeidet die meisten Fehler.