日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

urlencode编码基本概念_URLencode编码简析

發(fā)布時間:2023/12/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 urlencode编码基本概念_URLencode编码简析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。