URL:统一资源定位符
标准格式:
scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]
scheme //有我们很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。
host //HTTP服务器的IP地址或者域名
port# //HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如tomcat的默认端口是8080 http://localhost:8080/
path //访问资源的路径
url-params //所带参数
query-string //发送给http服务器的数据
anchor //锚点定位
为什么要进行URL编码
1.会引起歧义:比如在URL中我们以键值对的格式携带参数,每对键值对之间用&分隔,加入我们的参数中本身含有&,那么在解析的时候显然会出错
2.非法字符:URL采用的是ASCII编码,所以非ASCII编码出现在URL中也会导致解析错误,例如中文
编码的几种方式
escape():这个方法不同于后两种方法,它是对字符串进行编码,
此方法现在几乎被淘汰,此不赘述
encodeURI():这个方法是真正对URL进行编码的,它着眼于整个URL进行编码,不会对 ASCII字母 、数字 、 ~ ! @ # $ & * ( ) = : / , ; ? + ' 进行编码.
例如:
encodeURI("http://www.cnblogs.com/season-huang/some other thing");
//"http://www.cnblogs.com/season-huang/some%20other%20thing";
此处对空格进行了编码,而不会对其他ASCII码进行编码
对应解码函数:decodeURL()
encodeURIComponent()着眼于对单个的参数进行编码,"; / ? : @ & = + $ , #",这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码
对应解码函数:decodeURLComponent()