1. 程式人生 > >URL encoding(URL編碼)

URL encoding(URL編碼)

encoding 識別 導致 urlencode 對應關系 流轉 轉換成 而是 統一

URL encoding(URL編碼),也稱作百分號編碼(Percent-encoding),是指特定上下文的統一資源定位符(URL)編碼機制
UrlEncode:將字符串以URL編碼
返回值:字符串
函數種類:編碼處理
編碼原理:
將需要轉碼的字符轉為16進制,然後從右到左,取4位(不足4位直接處理),每2位做一位,前面加上%,編碼成%XY格式。
URL encode的實質就是正確的使用percent encode(百分號編碼)
比如:中ASCII碼是-10544,對應的16進制是FFFFFFFFFFFFD6D0,那麽urlencode編碼結果是:%D6%D0
目前編碼原理:
在WWW最初時,做法是將字符流轉換成字節流,按照ASCII字符與字節一一對應可相互轉換,使用對應ASCII字符的整型值作為%的後兩個16進制字符,構成percent編碼。後來出現了多種percent編碼生成方法,導致了URI的難以識別。
目前做法,指定或系統默認的使用UTF8轉成字節流,每個字節編成一個percent編碼,例如:中文“網易”的URL編碼為%e7%bd%91%e6%98%93,而其UTF8字節流為e7 bd 91 e6 93,可以看出其一一對應關系

原則:

在URI的構成字符中,最安全的方案是正確使用“保留字符” 和 “非保留字符”的並集
保留字符: 在URL中起到職能型的字符,比如 & ,? 。所以被URL規則給“保留”了。
保留字(Reserved):! * ‘ () ; : @ & = + $ , / ? # []
非保留字(Unreserved):0到9的數字 - _ . ~ a到z A到Z

遵循原則:
1 不要對Unreserved(非保留字)做percent encode(百分號編碼)
2 除了保留字和非保留字之外的所有字符,必須進行percent encode(百分號編碼)
3 當保留字符不用於URL分隔符,而是用於其他的位置,比如query後面的value,要對這時用到的保留字做percent encode(百分號編碼)

URL encoding(URL編碼)