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

时间:2018-08-01 18:15:52

标签: javascript

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

换句话说,其中一个也可以做另一个的工作,所以我可以只使用其中一个?

对于为什么我们根本需要encodeURI(),我也有些困惑。如果我在浏览器的位置字段中输入URL,它是否应该为我进行所需的转换?或者,如果我调用Node.js http-client库函数,那应该也做不到吗?

对URL进行编码的原因是,这样我就可以将其嵌入为完整URL的查询字符串值,而不会破坏随后要发出请求的URL。但是,encodeURIComponent()不应该是我所需要的吗?

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

encodeURI()是否也不能对所有组件进行编码是有原因的吗?还是我可以创建自己的版本(称为encodeURI2())来完成所有工作?如果可能的话,内置这样的功能是否有意义?

0 个答案:

没有答案