urlencode编码基本概念_URLencode编码简析
urlEncode:
<1>·定義:百分號編碼(英語:Percent-encoding), 也稱作URL編碼(英語:URL encoding), 是特定上下文的統(tǒng)一資源定位符 (URL)的編碼機(jī)制. 實(shí)際上也適用于統(tǒng)一資源標(biāo)志符(URI)的編碼。也用于 為"application/x-www-form-urlencoded" MIME準(zhǔn)備數(shù)據(jù), 因?yàn)樗糜谕ㄟ^HTTP的請求操作(request)提交HTML表單數(shù)據(jù)。
<2>·URL含義:URL是為了 統(tǒng)一的命名網(wǎng)絡(luò)中的一個資源(URL不是單單為了HTTP協(xié)議而定義的,而是網(wǎng)絡(luò)上的所有的協(xié)議都可以使用)。所以這就要求URL有一些基本的特性:
1、URL是可移植的。(所有的網(wǎng)絡(luò)協(xié)議都可以使用URL)
2、URL的完整性。(不能丟失數(shù)據(jù),比如URL中包含二進(jìn)制數(shù)據(jù)時,如何處理)
3、URL的可閱讀性。(希望人能閱讀)
<3>·使用urlENcode原因:
1、當(dāng)字符串?dāng)?shù)據(jù)以url的形式傳遞給web服務(wù)器時,字符串中是不允許出現(xiàn)空格和特殊字符的
2、因?yàn)?url 對字符有限制,比如把一個郵箱放入 url,就需要使用 urlencode 函數(shù),因?yàn)?url 中不能包含 @ 字符。
3、url轉(zhuǎn)義其實(shí)也只是為了符合url的規(guī)范而已。因?yàn)樵跇?biāo)準(zhǔn)的url規(guī)范中中文和很多的字符是不允許出現(xiàn)在url中的。(主要就是消除服務(wù)器解析url時的奇異)
4、實(shí)例:
我們都知道Http協(xié)議中參數(shù)的傳輸是"key=value"這種簡直對形式的,如果要傳多個參數(shù)就需要用“&”符號對鍵值對進(jìn)行分割。如"?name1=value1&name2=value2",這樣在服務(wù)端在收到這種字符串的時候,會用“&”分割出每一個參數(shù),然后再用“=”來分割出參數(shù)值。針對“name1=value1&name2=value2”我們來說一下客戶端到服務(wù)端的概念上解析過程:
上述字符串在計算機(jī)中用ASCII嗎表示為: 6E616D6531 3D 76616C756531 26 6E616D6532 3D 76616C756532。 服務(wù)端在接收到該數(shù)據(jù)后就可以遍歷該字節(jié)流,首先一個字節(jié)一個字節(jié)的吃,當(dāng)吃到3D這字節(jié)后,服務(wù)端就知道前面吃得字節(jié)表示一個key,再想后吃,如果遇到26,說明從剛才吃的3D到26子節(jié)之間的是上一個key的value,以此類推就可以解析出客戶端傳過來的參數(shù)。現(xiàn)在有這樣一個問題,如果我的參數(shù)值中就包含=或&這種特殊字符的時候該怎么辦。比如說“name1=value1”,其中value1的值是“va&lu=e1”字符串,那么實(shí)際在傳輸過程中就會變成這樣“name1=va&lu=e1”。我們的本意是就只有一個鍵值對,但是服務(wù)端會解析成兩個鍵值對,這樣就產(chǎn)生了奇異。如何解決上述問題帶來的歧義呢?解決的辦法就是對參數(shù)進(jìn)行URL編碼URL編碼只是簡單的在特殊字符的各個字節(jié)前加上%,例如,我們對上述會產(chǎn)生奇異的字符進(jìn)行URL編碼后結(jié)果:“name1=va%26lu%3D”,這樣服務(wù)端會把緊跟在“%”后的字節(jié)當(dāng)成普通的字節(jié),就是不會把它當(dāng)成各個參數(shù)或鍵值對的分隔符。
<4>·編碼原理:
將需要轉(zhuǎn)碼的字符轉(zhuǎn)為16進(jìn)制,然后從右到左,取4位(不足4位直接處理),每2位做一位,前面加上%,編碼成%XY格式。
比如:
空格ASCII碼是32,對應(yīng)16進(jìn)制是20,那么urlencode編碼結(jié)果是:%20,但在新標(biāo)準(zhǔn)中空格對應(yīng)的是+
比如:
中 ASCII碼是-10544,對應(yīng)的16進(jìn)制是FFFFFFFFFFFFD6D0,那么urlencode編碼結(jié)果是:%D6%D0
部分特殊字符編碼:
空格 ! # $ % + @ : = ?
%20 %21 %23 %24 %25 %2B %40 %3A %3D %3F
總結(jié)
以上是生活随笔為你收集整理的urlencode编码基本概念_URLencode编码简析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据入门介绍和学习路线
- 下一篇: 什么是脚本,脚本语言?