为什么要用encodeURIComponent()代替escape()

昨晚又连夜回到了学校,TMMD,不说了~

最近研究了下字符转码,在 《JavaScript 权威指南》 中说最好不要用 escape() 而用 encodeURIComponent() 或者 encodeURI() ,在 MSDN 上也这么说,(强劲BS一下《JavaScript 权威指南》都说 encodeURIComponent() 比 escape() 好了,可是例子中老喜欢用 escape() ,误人子弟啊~)可是为什么呢,都说的不清楚…

我上网找啊找啊,发现大家也不太了解,又看了看书,书上说 escape() 对 u0000 到 u0070 进行转码, encodeURIComponent() 对 u0080 到 u00FF 进行转码,那么是不是 escape() 只对 ASCII(代码 0-127) 进行转码而不对 (代码 128-255) 进行转码, 那么 encodeURIComponent() 才是我们想要的转码内容,escape() 他转码转的好象都是可不转的码。。。 ,然后经实验的确如此。。。

上面说错了,本质原因是 escape() 只是为 ASCII字符 做转换工作,转换成的 %unnnn 这样的码,如果要用更多的字符如 UTF-8字符库 就一定要用 encodeURIComponent() 或 encodeURI() 转换才可以成 %nn%nn 这的码才可以,就这么简单,多与少的问题,HOHO~

所以所以,为了全球的统一化进程,在用 encodeURIComponent() 或 encodeURI() 代替 escape() 使用吧,挖哈哈哈哈哈哈哈~~~

发布者:s5s5

https://s5s5.me

“为什么要用encodeURIComponent()代替escape()”上的18条回复

  1. 小米啊~ 我想看看《CSS权威指南》这本书,好像有点早,主要讲CSS1的,会不会有点过时呢?

  2. @jazzpig:一般了,照学校的步骤来吧~
    @tenmonkey:学CSS不用什么书吧,直接网上有这么多教程,照着练就行了~

  3. 能不能直接在js中使用encodeURIComponent() 啊?如果不能,需要怎么做?

评论已关闭。