URI规则简介
RFC3986文档规定,URI中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~ 4个特殊字符以及所有保留字符。
保留字符:
reserved = gen-delims / sub-delims
gen-delims = ":" "/" "?" "#" "[" "]" "@"
sub-delims = "!" "$" "&" "'" "(" ")" "*" "+" "," ";" "="
未保留字符:
unreserved = 字母 / 数字 / "-" / "." / "_" / "~"
不安全字符:
- 空格。
- #:通常用于表示书签或者锚点
- %:百分号本身用作对不安全字符进行编码时使用的特殊字符
- 除保留字和未保留字符之外的其他字符
百分号编码
百分号编码的八位字节被编码为字符
三元组,由百分号“%”后跟两个
十六进制数字组成,后者表示该八位字节的数值。
pct-encoded = "%" HEXDIG HEXDIG
对于未保留字符,编码和不编码是等效的,即解析程序的解析结果是一致的。由于不安全字符可能引起解析程序的歧义,就需要对不安全字符进行百分号编码。
URL 编码
Url编码通常也被称为百分号编码。