python中的urlencode與urldecode

來源:互聯網
上載者:User

當url地址含有中文,或者參數有中文的時候,這個算是很正常了,但是把這樣的url作為參數傳遞的時候(最常見的callback),需要把一些中文甚至′/’做一下編碼轉換。

一、urlencode

urllib庫裡面有個urlencode函數,可以把key-value這樣的索引值對轉換成我們想要的格式,返回的是a=1&b=2這樣的字串,比如:

>>> from urllib import urlencode

>>> data = {

...     'a': 'test',

...     'name': '魔獸'

... }

>>> print urlencode(data)

a=test&name=%C4%A7%CA%DE

如果只想對一個字串進行urlencode轉換,怎麼辦?urllib提供另外一個函數:quote()

>>> from urllib import quote

>>> quote('魔獸')

'%C4%A7%CA%DE'

 

二、urldecode

當urlencode之後的字串傳遞過來之後,接受完畢就要解碼了——urldecode。urllib提供了unquote()這個函數,可沒有urldecode()!

>>> from urllib import unquote

>>> unquote('%C4%A7%CA%DE')

'\xc4\xa7\xca\xde'

>>> print unquote('%C4%A7%CA%DE')

魔獸

 

三、討論

在做urldecode的時候,看unquote()這個函數的輸出,是對應中文在gbk下的編碼,在對比一下quote()的結果不難發現,所謂的urlencode就是把字串轉車gbk編碼,然後把\x替換成%。如果你的終端是utf8編碼的,那麼要把結果再轉成utf8輸出,否則就亂碼。

可以根據實際情況,自訂或者重寫urlencode()、urldecode()等函數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.