这个比较好弄,因为urllib库提供了支持:
>>> urllib.urlencode({'name': '张三', 'age': 23})
>>> 'age=23&name=%E5%BC%A0%E4%B8%89'
python3里,库显得更规范些:
>>> urllib.parse.urlencode({'name': '张三', 'age': 23})
>>> 'age=23&name=%E5%BC%A0%E4%B8%89'
注意:尽管python3字符串换成unicode编码了,但是urlencode的结果还是utf8编码的。
很遗憾没有一个叫urldecode的函数来完成这个逆过程,python2里,居然是在另一个库的另一个函数里实现了:
>>> import urlparse
>>> urlparse.parse_qs('age=23&name=%E5%BC%A0%E4%B8%89')
>>> {'age': ['23'], 'name': ['\xe5\xbc\xa0\xe4\xb8\x89']}
>>> urlparse.parse_qsl('age=23&name=%E5%BC%A0%E4%B8%89')
>>> [('age', '23'), ('name', '\xe5\xbc\xa0\xe4\xb8\x89')]
python3则显得统一得多:
>>> urllib.parse.parse_qs('age=23&name=%E5%BC%A0%E4%B8%89')
>>> {'age': ['23'], 'name': ['张三']}
>>> urllib.parse.parse_qsl('age=23&name=%E5%BC%A0%E4%B8%89')
>>> [('age', '23'), ('name', '张三')]