escape(), encodeURI(), and encodeURIComponent()
首先都是JS里才有的encode函数,对应的decode函数是:
unescape(), decodeURI(), and decodeURIComponent()
我简单总结下区别:
- 可编码字符集不一样[参见]。decodeURI和decodeURIComponent就这点区别,导致使用场景不一样,一般直接用后者。
- 编码方式不一样。escape是按ISO Latin字符集编码;decodeURI/decodeURIComponent是采用UTF-8编码。
- 引入版本不一样。encodeURI/decodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
另外,三者不能解码时都会抛异常,注意try/catch。
参考(第一篇英文,非常推荐):
- http://xkr.us/articles/javascript/encode-compare/
- http://www.cnblogs.com/lovablebox/archive/2007/12/03/981307.html
- http://www.javascripter.net/faq/escape.htm