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