python的url編碼問題

2021-06-07 04:05:05 字數 965 閱讀 1920

urlencode的引數必須是dictionary

d= p

rinturllib.urlencode(m)

#par2=b&par1=a

函式urlencode不會改變傳入引數的原始編碼,也就是說需要在呼叫之前將post或get引數的編碼調整好。python編碼轉換可以參考 。

問題:現在模擬請求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 =

s = urllib.urlencode(m)

print s

#結果為par=%b5%db%b9%fa

---->這個是說把『帝國』放到url的引數後面

django中urlencode類似,方法如下:

a = 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'

**:

url編碼問題

url編碼規則1.字元 a z a z 0 9 和 都不會被編碼 2.將空格轉換為加號 3.將非文字內容轉換成 xy 的形式,xy是兩位16進製制的數值 可以直接使用urlencoder.encode 和urldecoder.decode 進行編碼和解碼 string s a.b c d e f g...

URL中的編碼問題

文章 自 路徑編碼採用utf 8 查詢字串編碼和作業系統編碼一致 get和post方法用的是網頁的編碼 ajax呼叫的url包含漢字,ie採用gb2312 作業系統的預設編碼,gbk相容gb2312 firefox和google採用utf 8 對於以上統一處理的辦法就是在js中對url編碼,可以用e...

url中文編碼問題

1.url該編碼的編碼一定要編碼,否則如果存在空格就會報400錯誤,那麼什麼樣的url是該編碼的呢?url中有空格等特殊字元的 url中有中文的2.編碼要只對引數編碼,不要對整個url進行編碼,因為如果對整個url編碼的話會把url中的 等字元也進行編碼了 3.使用urlencoder.encode...