escape(), encodeURI()和 encodeURIComponent()有什么异同,它们分别适用于那种特定的情况呢?
escape方法并不编码字符+。而我们知道,在用户提交的表单字段中,如果有空格,则会被转化为+字符,而服务器解析的时候则会认为+号代表空格。由于这个缺陷,escape方法并不能正确地处理所有的非ASCII字符,你应当尽量避免使用escape方法,取而代之,你最好选择encodeURIComponent()方法。 escape()不编码的字符:@*/+相对于使用escape方法,使用encodeURI方法会显得更专业一些。当你需要编码一整个URI的时候,你可以使用此方法,因为URI中的合法字符都不会被编码转换。需要注意到是字符‟也是URI中的合法字符,所以也不会被编码转换。
encodeURI() 不编码的字符: ~!@#$&*()=:/,;?+''
encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的。需要注意到是字符‟也是URI中的合法字符,所以也不会被编码转换。 encodeURIComponent()不编码的字符: ~!*()''
escape方法并不编码字符+。而我们知道,在用户提交的表单字段中,如果有空格,则会被转化为+字符,而服务器解析的时候则会认为+号代表空格。由于这个缺陷,escape方法并不能正确地处理所有的非ASCII字符,你应当尽量避免使用escape方法,取而代之,你最好选择encodeURIComponent()方法。 escape()不编码的字符:@*/+相对于使用escape方法,使用encodeURI方法会显得更专业一些。当你需要编码一整个URI的时候,你可以使用此方法,因为URI中的合法字符都不会被编码转换。需要注意到是字符‟也是URI中的合法字符,所以也不会被编码转换。
encodeURI() 不编码的字符: ~!@#$&*()=:/,;?+''
encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的。需要注意到是字符‟也是URI中的合法字符,所以也不会被编码转换。 encodeURIComponent()不编码的字符: ~!*()''