/ / Чому неможливо "decodeURIComponent" або "decodeURI" декодувати "hello + world" на "hello world" у JavaScript? [дублікат] - javascript, url, urlencode, urldecode

Чому "decodeURIComponent" або "decodeURI" не можуть декодувати "hello + world" на "hello world" у JavaScript? [дублікат] - javascript, url, urlencode, urldecode

Відповідно до цього:

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

"+" є дійсним токеном кодування коду URL.

Якщо так, то чому не можна decodeURIComponent або decodeURI розшифрувати "hello + world" на "hello world"?

Якщо "+" дійсно, то обов'язково має бути вбудована функція в JavaScript, яка може перетворити "hello + world" на "hello world"?

Відповіді:

0 для відповіді № 1

Поведінка Росії decideURIComponent визначається як "зворотна" операція encodeURIComponent:

The decodeURIComponent Функція обчислює нову версію a URI в якій кожна евакуаторна послідовність і utf-8 кодування такого роду, який може бути введений в encodeURIComponent функція замінюється символом, який він представляє.

І encodeURIComponent не замінює пробіли з +, але з %20.

(аналогічний для decodeURI)

Якщо "+" дійсно, то обов'язково має бути вбудована функція в JavaScript, яка може перетворити "hello + world" на "hello world"?

Звичайно, є:

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

0 для відповіді № 2

Оскільки encodeURIComponent буде кодувати пробіл до %20 щоб ви могли отримати hello%20world. Якщо ти хочеш замінити + символів, я б запропонував використовувати регулярний вираз