无论是python2还是python3,字符串编码都是一个让人头疼的事情,python3尽管逻辑更清楚了,但是很多库的输入输出类型各异,也是很费记忆力。
最容易出现的就是这种不报错的bug:
>>> 'prefix:%s' % hexlify(b'blabla')
>>> "prefix:b'626c61626c61'"
罗列一些常见库的输入输出字符串类型:
binascii.hexlify() 输入bytes,输出bytes
md5(b'xxx').hexdigest() 输入bytes,输出str
base64.b64encode() 输入bytes,输出bytes
base64.b64decode() 输入bytes/str,输出bytes
json.dumps() 输入str,输出为str
ujson.dumps() 输入bytes/str,输出为str
msgpack.dumps() 输入bytes/str,输出为bytes
msgpack.loads() 输入为bytes,输出为bytes/str,由raw来控制
urllib.parse.urlencode() 输入bytes/str,输出为str
urllib.parse.parse_qs() 输入为str,输出为str