《JavaScript 权威指南》中说最好不要用escape(),而用encodeURIComponent()或者encodeURI()。原因是escape()转换成的是%uXXXX这样的unicode码,一定要用encodeURIComponent(),或encodeURI()转换才可以成%XX%YY 这的UTF-8码。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含URL或URI,请使用 encodeURI 方法进行。所以似乎意味着,encodeURI比encodeURIComponent更为通用,更和谐。。。
试比较:
escape("中国 人ren!") => %u4E2D%u56FD%20%u4EBAren%21
encodeURI("中国 人ren!") => %E4%B8%AD%E5%9B%BD%20%E4%BA%BAren!
当然了,如果是我,我会选择encodeURI()的,毕竟这个比较短,而且比encodeURIComponent更为通用,好记!
下面这篇贴子也比较有用:一些Javascript中数值与文字的互换函数






![[ico50]](images/emot/ico50.gif)

