python url 編碼解碼


 

Python進行URL解碼

import urllib
rawurl=xxx
url=urllib.unquote(rawurl)

所用模塊:urllib

所用函數:urllib.unquote()

案例

import urllib
rawurl = "%E6%B2%B3%E6%BA%90"
url = urllib.unquote(rawurl)
print url

輸出

河源

 

問題擴展

urllib.unquote()目的是對url編碼進行解碼,與該函數對應的是編碼函數urllib.quote()

>>> import urllib
>>> urllib.quote( "河源" )
'%E 6% B 2% B 3% E 6% BA% 90

URL為何要編碼、解碼?

    通常如果一樣東西需要編碼,說明這樣東西並不適合傳輸。原因多種多樣,如Size過大,包含隱私數據。對於Url來說,之所以要進行編碼,是因為Url中有些字符會引起歧義。

    例如,Url參數字符串中使用key=value鍵值對這樣的形式來傳參,鍵值對之間以&符號分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么勢必會造成接收Url的服務器解析錯誤,因此必須將引起歧義的&和=符號進行轉義,也就是對其進行編碼。

    又如,Url的編碼格式采用的是ASCII,而不是Unicode,這也就是說你不能在Url中包含任何非ASCII字符,例如中文。否則如果客戶端瀏覽器和服務端瀏覽器支持的字符集不同的情況下,中文可能會造成問題。

編解碼一般都是針對url參數的,url的其他部分一般人都不會使用非ASCII字符的。

urllib.quote(string[, safe]):對字符串進行編碼。參數safe指定了不需要編碼的字符;

urllib.unquote(string) :對字符串進行解碼;

urllib.quote_plus(string [ , safe ] ) :與urllib.quote類似,但這個方法用'+'來替換' ',而quote用'%20'來代替' '

urllib.unquote_plus(string ) :對字符串進行解碼;

urllib.urlencode(query[, doseq]):將dict或者包含兩個元素的元組列表轉換成url參數。例如 字典{'name': 'dark-bull', 'age': 200}將被轉換"name=dark-bull&age=200"

 

url參數如何構造?


有兩個方式:

  • 人工組合參數字符串
  • 使用urllib庫中的urlencode方法來構造

第一個方法這里不在描述,第二個方法是可以安裝如下步驟來進行:

  1. import urllib
  2. params = {'usrname':'pan', 'password':'123456'}
  3. base_url = 'http://www.x.com/login.html'
  4. url = base_url + '?' +urllib.urlencode(params)
  5. print url

其中url就是

  1. http://www.x.com/login.html?password=123456&usrname=pan

 

params = {'src':'rtmp://10.53.120.72/live/ls_fxzl_jk', 'obj':'rtmp://10.121.33.36/live/decklink__10.1.22.241_9114'}

>>> print urllib.urlencode(params)    對參數進行編碼
src=rtmp%3A%2F%2F10.53.120.72%2Flive%2Fls_fxzl_jk&obj=rtmp%3A%2F%2F10.121.33.36%2Flive%2Fdecklink__10.1.22.241_9114

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM