寫在前面
組成 URL(全稱:Uniform Resource Locator,縮寫:URL;或稱統(tǒng)一資源定位器、定位地址、URL地址,俗稱網頁地址或簡稱網址)字符是有限的,URL編碼就是為了解決這個問題的。
比如
https://zh.wikipedia.org/wiki/哈
URL編碼后
https://zh.wikipedia.org/wiki/%e5%93%88
URL編碼,又稱百分號編碼,是特定上下文的統(tǒng)一資源定位符 (URL)的編碼機制,實際上也適用于統(tǒng)一資源標志符(URI)的編碼。
編碼原理
URL所允許的字符分作保留與未保留。
- 保留: 字符是那些具有特殊含義的字符,例如:斜線字符用于URL不同部分的分界符;
- 未保留: 字符沒有這些特殊含義。
上述情形隨URL的不同版本規(guī)格會有輕微的變化。

URL_img01.png
URL中的其它字符必須用百分號編碼。
編碼規(guī)則:轉換為UTF-8字節(jié)序, 然后每個字節(jié)前面放置轉義字符("%")
比如:編碼“~”(UTF8在編碼ASCII碼時,通過一個字節(jié)來編碼ASCII碼同時也保持其值一致)
第一步,轉換UTF8編碼:7e(ASCII碼也是:7e)
第二步,URL編碼:%7e
比如,編碼“哈”
第一步,轉換UTF8編碼:e59388
第二步,URL編碼:%e5%93%88
注意:
- UTF8 是用來編碼 Unicode 碼的;
- 如果URL保留字符是有上下含義,可以對其進行百分號編碼,比如:
name=va&lue,編碼之后name=va%26lue,這樣解析之后name的值就是va&lue,如果不編碼值就是va;