简单点说就是以下几个区别:
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
详细的网上还有很多说明:
http://www.cnblogs.com/s1ihome/archive/2008/05/06/1184254.html
http://blog.sina.com.cn/s/blog_49b3ba190100irlv.html
如果是与php的urldecode/urlencode配合使用的话,建议使用encodeURIComponent