escape和encodeURI的区别

在项目中发现,decodeURI无法对传入的URL解码

原因:该URL是由escape做的编码,必须改用encodeURI对其编码,才能被decodeURI解码

三者的区别之一:

1.各自排除编码的字符不同

escape() will not encode: @*/+
encodeURI() will not encode: ~!@#$&*()=:/,;?+'
encodeURIComponent() will not encode: ~!*()'

2.编码结果不同(http://en.wikipedia.org/wiki/Percent-encoding

escape('王') = %u738B 是非标准Pecent-encoding, 现在已经没有标准支持(建议避免使用该方法)

encodeURI('王') = %E7%8E%8B 是标准

3.解码的方式不同

escape()只能使用unescape()来解码

encodeURI() 只能使用decodeURI()解码


参考:

http://ued.koubei.com/?p=537

http://xkr.us/articles/javascript/encode-compare/

你可能感兴趣的:(JavaScript)