如何理解URL和URI
uri 统一资源标识符(关键是标识),url统一资源定位符(关键是定位)。uri是url的超集,url是uri的一种实现,在http协议中定义
举例:
数据库中保存用户的头像地址,如果保存值为:/images/zcr.jpg那么叫uri比较合适,如果保存的值为http://www.baidu.com/images/zcr.jpg,那么叫url更合适
为什么要进行URI编码
有规则的文本中,就存在保留字符,要么选择不能使用保留字符,要么就要对其进行编码
举例:
c语言中的main就是一个保留字符,一个程序中不能定义两个main函数
json数据中"{"和"}"就是保留字符,json中的保留字符就要进行编码
url中的?就是保留字符,如果get参数中出现"?"怎么办,会导致代理服务器或者服务器对参数的解析结果与我们预想传输的数据不一致。
URI中哪些保留字符
·不在ASCII码范围内的字符,如中文字符
·ASCII码不可见范围内的字符,如换行、回车
·URI中规定的保留字符
包括: / ? # [ ] @ ! $ & ' ( ) * + , ; =
·不安全字符,如空格、引号、尖括号等
如何进行URI编码和解码
url中一般使用百分号编码
对于中文字符,建议首先使用utf-8编码,然后在使用百分号编码
一般不同的语言都有urlencode和urldecode的api供使用,原理就是百分号编码