先看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() 函数执行结果一致,交互最为便捷.