js中encodeURI()与encodeURIComponent()区别

先看W3C上的解释 encodeURI()和encodeURIComponent()

encodeURIComponent会转义;/?:@&=+$,#这些分隔符,而encodeURI()并不会这么干。

;/?:@&=+$,#这些是非常危险的字符,想想在一个提交表单中用户输入类似&11,可能会改变原本的后台提交参数,造成混乱。

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

PS:  推荐使用 encodeURIComponent(), 用它编码过的 URL 与 PHP urlencode() 函数执行结果一致,交互最为便捷.

原文地址:https://www.cnblogs.com/mafeifan/p/3072958.html