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編碼通常也被稱爲百分號編碼。