URL编码

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()

原文作者:baiying

原文链接:http://www.jianshu.com/p/61a02862ea7f

你可能感兴趣的:(URL编码)