Javascript 如果我的URI组件是一个完整的URL,我应该同时使用encodeURI()和encodeURIComponent()对其进行编码吗?

Javascript 如果我的URI组件是一个完整的URL,我应该同时使用encodeURI()和encodeURIComponent()对其进行编码吗?,javascript,Javascript,如果我的URI组件(比如一个查询字符串参数的值)是一个完整的URL,我应该使用encodeURI()还是encodeURIComponent()?或者两者都像这样:encodeURI组件(encodeURI(completeUri)) 换句话说,它们中的一个是否也做了另一个的工作,这样我就可以使用其中的一个 我也有点困惑,为什么我们需要encodeURI()。如果我输入浏览器位置字段的URL,它是否应该为我进行必要的转换?或者,如果我调用Node.js http客户端库函数,该函数是否也应该这样

如果我的URI组件(比如一个查询字符串参数的值)是一个完整的URL,我应该使用encodeURI()还是encodeURIComponent()?或者两者都像这样:encodeURI组件(encodeURI(completeUri))

换句话说,它们中的一个是否也做了另一个的工作,这样我就可以使用其中的一个

我也有点困惑,为什么我们需要encodeURI()。如果我输入浏览器位置字段的URL,它是否应该为我进行必要的转换?或者,如果我调用Node.js http客户端库函数,该函数是否也应该这样做

对URL进行编码的原因是,我可以将其嵌入为完整URL的查询字符串值,而不会破坏包含URL的内容,然后我将请求该URL。但是encodeURIComponent()不是我需要的全部吗

所以我想我问题的第二部分是为什么我应该在什么时候使用encodeURI()


encodeURI()无法对其所有组件进行编码,这有什么原因吗?或者我可以创建自己的版本,比如encodeURI2(),它可以完成所有的功能?如果可能的话,内置这样一个函数没有意义吗?

可能的重复我知道这几乎是前面提到的相关问题的重复,但我的问题是如何处理URI组件,它也是一个完整的URL我需要调用encodeUriComponent()和encodeURI()吗获取可以用作URL的结果,以及在何种情况下。这是一个复杂的话题,所以我认为非常具体地回答被问的问题很重要。这个问题的第二个答案正是你问题的答案。我想说这是一个很好的答案,但有点含糊不清,因为它回答了如果a然后是X,如果B然后是Y,但它没有具体回答如果a和B都是什么?。这可能是正确的答案,但它是对一个稍有不同的问题的回答。
'http://example.com/foo?bar=“+encodeURIComponent('http://example.com/blah?baz=doh)