Die beste Antwort ist die Verwendung von encodeURIComponent
auf Werte in der Abfragezeichenfolge (und nirgendwo sonst).
Ich habe jedoch festgestellt, dass viele APIs " " durch "+" ersetzen wollen, so dass ich das Folgende verwenden musste:
const value = encodeURIComponent(value).replace('%20','+');
const url = 'http://example.com?lang=en&key=' + value
escape
ist in verschiedenen Browsern unterschiedlich implementiert und encodeURI
kodiert nicht viele Zeichen (wie # und sogar /) - es ist dafür gemacht, auf eine vollständige URI/URL angewendet zu werden, ohne sie zu zerstören - was nicht besonders hilfreich oder sicher ist.
Und wie @Jochem weiter unten anmerkt, sollten Sie vielleicht encodeURIComponent()
auf einen (jeden) Ordnernamen, aber aus irgendeinem Grund scheinen diese APIs nicht zu wollen +
in Ordnernamen so einfach wie möglich encodeURIComponent
funktioniert hervorragend.
Beispiel:
const escapedValue = encodeURIComponent(value).replace('%20','+');
const escapedFolder = encodeURIComponent('My Folder'); // no replace
const url = `http://example.com/${escapedFolder}/?myKey=${escapedValue}`;
30 Stimmen
Versuchen Sie es mit encodeURI() y decodeURI() .
1 Stimmen
Voir JavaScript urlencode-Funktion .
1 Stimmen
Sie können dieses Tool hier verwenden: phillihp.com/toolz/url-encode-decode
4 Stimmen
EncodeURIComponent()
0 Stimmen
Bitte gehen Sie zu diese Antwort da sie die einzige ist, die moderne Javascript-Funktionen verwendet (die nur im Internet Explorer unterstützt werden).