|
通常如果一樣?xùn)|西需要編碼,說明這樣?xùn)|西并不適合傳輸。原因多種多樣,如Size過大,包含隱私數(shù)據(jù),對于Url來說,之所以要進(jìn)行編碼,是因?yàn)閁rl中有些字符會引起歧義。
例如,Url參數(shù)字符串中使用key=value鍵值對這樣的形式來傳參,鍵值對之間以&符號分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么勢必會造成接收Url的服務(wù)器解析錯誤,因此必須將引起歧義的&和=符號進(jìn)行轉(zhuǎn)義,也就是對其進(jìn)行編碼。
又如,Url的編碼格式采用的是ASCII碼,而不是Unicode,這也就是說你不能在Url中包含任何非ASCII字符,例如中文。否則如果客戶端瀏覽器和服務(wù)端瀏覽器支持的字符集不同的情況下,中文可能會造成問題。
Url編碼的原則就是使用安全的字符(沒有特殊用途或者特殊意義的可打印字符)去表示那些不安全的字符。
預(yù)備知識:URI是統(tǒng)一資源標(biāo)識的意思,通常我們所說的URL只是URI的一種。典型URL的格式如下所示。下面提到的URL編碼,實(shí)際上應(yīng)該指的是URI編碼。
哪些字符需要編碼
foo:
//example.com:8042/over/there?name=ferret#nose
/_/ /______________/ /________//_________/ /__/
| | | | |
scheme authority path query fragment
it知識庫:URL編碼與解碼,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。