當前位置:成語大全網 - 新華字典 - 不深入只淺出——iOS的URL編碼和解碼

不深入只淺出——iOS的URL編碼和解碼

Http協議中參數的傳遞是通過鍵值對"key=value"形式來進行,多參數之間使用“&”符號對鍵值對進行拼接,如:"?key1=value1&key2=value2"。而服務端對URL的解析,也是以“&”分割出每個參數鍵值對,以“=”分割每個鍵值對中的鍵和值,壹個字節壹個字節對URL字節流進行處理的。

上述的解析會產生壹個問題:如果參數的值本身就帶有“&”,“=”這種特殊字符怎麽辦?這就是進行URL編碼的原因所在。URL編碼原理只是在特殊字符的各個字節前加上%,這裏說的特殊字符不僅僅只是“=”和“&”,而且還有保留字符、不安全字符以及非ASCII碼字符,下面會詳細解析。

既然是編碼,自然就會用到字符集,就像解析密碼需要密碼本壹樣。URL編碼默認使用的字符集是US-ASCII,所以對於URL編碼,最準確的定義應該是: 百分號(%)加上該字節對應的兩位US-ASCII字符(由0123456789ABCDEF組成,代表該字節的十六進制形式) 。那麽,什麽情況下需要對字節進行編碼呢,還是說所有字節都需要編碼?對於URL中的合法字符,編碼和不編碼是等價的,也就是說,假如參數為:key1=url,這種情況下編碼與不編碼是壹樣的,進而言之,只有對保留字符、不安全字符以及非ASCII碼字符進行的URL編碼才有實際的意義。