浏览器 url 编码

一、问题的由来 : http://www.ruanyifeng.com/blog/2010/02/url_encoding.htmlhtml

二、网络标准RFC 1738作了硬性规定: 只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才能够不通过编码直接用于URL。浏览器

   基于这个标准,因此浏览器必须对规定之外的字符进行编码。问题是不一样的浏览器编码的规范是不同的,后台解析的不可能把全部状况的考虑进去。网络

   因此须要经过js 进行统一的编码,这样使得 url 符合 标准了,浏览器就没有插手 编码的就会了。函数

三、js 编码方法:编码

   a、escape:实际上,escape()不能直接用于URL编码,它的真正做用是返回一个字符的Unicode编码值。好比"春节"的返回结果是 %u6625%u8282 。(已经不提倡使用了)url

   b、encodeURI:是 真正用来对URL编码的函数。所以除了常见的符号之外,对其余一些在网址中有特殊含义的符号 "; / ? : @ & = + $ , #",也不进行编码spa

   若是 encodeURI 不编码的部分(如 = 号)放在参数中,就会打乱 url 的 解析的结果。因此须要 encodeURIComponent 把参数中encodeURI 不编码的部分编码掉。code

   c、encodeURIComponent: 它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。htm

    "; / ? : @ & = + $ , #",这些在encodeURI()中不被编码的符号,在encodeURIComponent()中通通会被编码blog

相关文章
相关标签/搜索