我应该使用encodeURI还是encodeURIComponent来编码URL?
应使用这两种方法中的哪一种来编码URL?
这取决于你实际想要做什么。
encodeURI假定输入是一个完整的URI,可能有一些需要编码的字符。
encodeURIComponent将编码具有特殊含义的所有内容,因此可以将它用于URI的组件,例如
var world = "A string with symbols & characters that have special meaning?";
var uri = 'http://example.com/foo?hello=' + encodeURIComponent(world);
如果你编码的字符串放入一个URL组件(查询字符串参数),你应该调用encodeURIComponent
。
如果您正在编码现有的URL,请调用encodeURI
。
xkr.us有一个很好的讨论和例子。 引用他们的总结:
escape()方法不编码在服务器端解释为空间的+字符,也不编码在其字段中带有空格的表单。 由于这个缺点以及这个函数无法正确处理非ASCII字符的事实,您应该尽可能避免使用escape()。 最好的选择通常是encodeURIComponent()。
escape()不会编码:@ * / +
encodeURI()方法的使用比escape()更专业一点,因为它编码的是URI,而不是querystring,它是URL的一部分。 当您需要编码字符串时使用此方法,以便用于使用URI的任何资源,并且需要某些字符保持未编码。 请注意,此方法不会对'字符进行编码,因为它是URI中的有效字符。
encodeURI()不会进行编码:〜!@#$&*()=:/,;?+'
最后,在编码URI的单个组件时,大多数情况下应该使用encodeURIComponent()方法。 这种方法将对某些字符进行编码,这些字符通常会被识别为URI的特殊字符,因此可能包含许多组件。 请注意,此方法不会对'字符进行编码,因为它是URI中的有效字符。
encodeURIComponent()不会编码:〜!*()'
链接地址: http://www.djcxy.com/p/26515.html上一篇: Should I use encodeURI or encodeURIComponent for encoding URLs?