python urlencode 編碼 [Python俱樂部]
python urlencode 編碼urlencode 調用方法
urlencode的參數必須是Dictionary
d= {'par1':'a','par2':'b',}print urllib.urlencode(m)#par2=b&par1=a
urlencode 編碼
函數urlencode不會改變傳入參數的原始編碼,也就是說需要在調用之前將post或get參數的編碼調整好。Python編碼轉換可以參考 http://www.pythonclub.org/python-basic/codec 。
問題:現在類比請求Google和baidu,由於baidu使用的是gb2312編碼,google使用的是utf8編碼,兩個網站提交到URL中的中文參數的urlencode值是不一樣,下面以”帝國”為例:
python檔案的
# coding: UTF-8
執行urllib.urlencode(“帝國”)得到的結果是:%E5%B8%9D%E5%9B%BD, 此結果說明預設使用 urlencode得到的結果是utf8編碼的“帝國”。
現在想得到gb2312編碼的“帝國”怎麼辦呢?
st = u'帝國'st = st.encode('gb2312')m = {'par':st,}s = urllib.urlencode(m)print s#結果為par=%B5%DB%B9%FA
django中urlencode類似,方法如下:
from django.utils.http import urlquotea = urlquote('帝國')print a
得到漢字的GBK編碼
其實可以用urllib的quote函數對URL中的中文進行轉換,將中文轉換成GBK的編碼,得到的編碼是符合URI標準的URL。
>>> import urllib>>> a = "帝國">>> a'\xb5\xdb\xb9\xfa'>>> urllib.quote(a)'%B5%DB%B9%FA'>>>