Python2 和 Python3 对于处理 urlencode 有些区别

Python2

1
2
3
4
5
6
7
8
9
10
11
>>> import urllib
>>> f = { 'eventName' : 'myEvent', 'eventDescription' : '中国'}
>>> urllib.urlencode(f)
'eventName=myEvent&eventDescription=%E4%B8%AD%E5%9B%BD'
>>> urllib.quote("中国 北京")
'%E4%B8%AD%E5%9B%BD%20%E5%8C%97%E4%BA%AC'
>>> urllib.unquote('%E4%B8%AD%E5%9B%BD%20%E5%8C%97%E4%BA%AC')
'\xe4\xb8\xad\xe5\x9b\xbd \xe5\x8c\x97\xe4\xba\xac'
# 需要手动转为 unicode
>>> urllib.unquote('%E4%B8%AD%E5%9B%BD%20%E5%8C%97%E4%BA%AC').decode('utf8')
u'\u4e2d\u56fd \u5317\u4eac'

Python3

1
2
3
4
5
6
7
8
9
10
>>> from urllib.parse import urlencode
>>> f = { 'eventName' : 'myEvent', 'eventDescription' : '中国'}
>>> urlencode(f)
'eventName=myEvent&eventDescription=%E4%B8%AD%E5%9B%BD'
>>> from urllib.parse import quote
>>> quote("中国")
'%E4%B8%AD%E5%9B%BD'
>>> from urllib.parse import unquote
>>> unquote('%E4%B8%AD%E5%9B%BD')
'中国'

对字符串的转码上除了 quote 还有 quote_plus 方法,他们的区别在于,前者会把空格转为 %20,后者转为 +

03-16 22:39