/ / Warum kann nicht "decodeURIComponent" oder "decodeURI" "Hallo + Welt" in "Hallo Welt" in JavaScript dekodieren? [duplizieren] - javascript, url, urlencode, urldecode

Warum kann "decodeURIComponent" oder "decodeURI" "Hallo + Welt" in "Hallo Welt" in JavaScript nicht dekodieren? [duplizieren] - javascript, url, urlencode, urldecode

Demzufolge:

http://en.wikipedia.org/wiki/Query_string#URL_encoding

"+" ist ein gültiges URL-Codierungs-Token.

Wenn ja, warum kann "t decodeURIComponent oder decodeURI "Hallo + Welt" zu "Hallo Welt" dekodieren?

Wenn "+" gültig ist, muss es in JavaScript eine eingebaute Funktion geben, die "Hallo + Welt" in "Hallo Welt" umwandeln kann?

Antworten:

0 für die Antwort № 1

Das Verhalten von decideURIComponent ist definiert als "inverse" Operation von encodeURIComponent:

Das decodeURIComponent Funktion berechnet eine neue Version von a URI in dem jede Escape-Sequenz und UTF-8-Codierung der Art, die durch die eingeführt werden könnte encodeURIComponent Funktion wird durch das Zeichen ersetzt, das es darstellt.

Und encodeURIComponent ersetzt keine Leerzeichen mit +, aber mit %20.

(ähnlich für decodeURI)

Wenn "+" gültig ist, muss es in JavaScript eine eingebaute Funktion geben, die "Hallo + Welt" in "Hallo Welt" umwandeln kann?

Natürlich gibt es:

"hello+world".replace(/+/g, " ");

0 für die Antwort № 2

weil encodeURIComponent würde einen Raum codieren %20 also würdest du bekommen hello%20world. Wenn Sie ersetzen möchten + Zeichen würde ich vorschlagen, Regex zu verwenden