欢迎光临

木子屋

标题: escape、encodeURI、encodeURIComponent三个函数比较

作者: dnawo

日期: 2008-01-29 09:25 PM

分类: 脚本语言

内容: JavaScript中escape、encodeURI、encodeURIComponent三个函数都具有的编码的功能，并对应的定义了三个解码函数unescape、decodeURI、decodeURIComponent，它们有什么不同呢？综合书上讲的和网上搜索主要为以下三点：
1.编码格式：encodeURI和encodeURIComponent都是采用UTF-8，而escape是采用Unicode；
2.不编码的范围：三个函数都不对[a-z]、[A-Z]、[0-9]进行编码，除此之外，escape还不对"@*_+-.\"进行编码；encodeURI还不对"-_.!~*'();/?:@&=+$,#"进行编码；encodeURIComponent还不对"-_.!~*'()"进行编码，可见escape不编码的字符最少(69个)，encodeURIComponent其次(71个)，encodeURI最多(82个)；
3.使用场合：如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候)，只需要使用escape；如果你的页面是GB2312或者其他的编码，而接受参数的页面是UTF-8编码的，就要采用encodeURI或者encodeURIComponent。
《JavaScript 权威指南》第四版中建议最好不要用escape而用encodeURIComponent或encodeURI，或许在js to js场合下应该这么做，但我好几次在js to asp/.net(UTF-8传参到GB2312)场合下都是用escape来解决问题的，你会发现它比encodeURIComponent或encodeURI简单得多，使用escape，asp/.net直接用request，不需要再进行其它编码转换工作！

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.718 ms

返回

标题: escape、encodeURI、encodeURIComponent三个函数比较

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.718 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.841 ms

返回