escape,encodeURI,encodeURIComponent该用哪一个?

来源:互联网 发布:网络用户主要是 编辑:程序博客网 时间:2024/06/13 06:54

(1)、escape一般用来转义,但是基于不能转义“+”号形如:http://domain?name=xx+xx;

所以对于url的转义不建议采用escape.

并且超过255的字符采用unicode的形式进行编码%uxxxx

+号在服务器会被当作空格 表单提交时,空格符浏览器转成+ 分不清是输入的+还是空格


(2)、encodeURI,与encodeURIComponent编码成utf-8的字符

encodeURI整体uri进行编码参数含有中文encodeURI("http://aa/aa?aa=ee&a=中国");

encodeURIComponent不能用来对整体uri编码,因为会对“/”,“?”,":","="进行编码,传到服务器后将得不到正确的资源访问。

encodeURIComponent("http://aa/2?a=3")---->"http%3A%2F%2Faa%2F2%3Fa%3D3"
正确的方式是对uri传参部分进行encodeURIComponent编码

正确:http://xx?+encodeURIComponent("name=23wef")---->"name%3D23wef"


escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z