为什么不能在JavaScript中“decodeURIComponent”或“decodeURI”将“hello + world”解码为“hello world”?

时间:2015-03-06 10:00:36

标签: javascript url urlencode urldecode

根据这个:

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

" +"是一个有效的URL编码令牌。

如果是这样,为什么不能decodeURIComponentdecodeURI解码" hello + world" to" hello world"?

如果" +"是有效的,当然,JavaScript中必须有一个内置函数可以转换" hello + world" to" hello world"?

2 个答案:

答案 0 :(得分:1)

The behavior of decideURIComponent is defined as encodeURIComponent的“反向”操作:

  

decodeURIComponent函数计算URI的新版本,其中encodeURIComponent函数可能引入的排序的每个转义序列和UTF-8编码将替换为encodeURIComponent函数。它代表的角色。

并且+不会将空格替换为%20,而是替换为decodeURI

(类似于"hello+world".replace(/\+/g, ' ');

  

如果“+”有效,肯定有一个JavaScript中的内置函数可以将“hello + world”转换为“hello world”吗?

当然有:

{{1}}

答案 1 :(得分:0)

由于encodeURIComponent会将空格编码为%20,因此您将获得hello%20world。如果您想替换+个字符,我建议使用正则表达式