测试环境
Python 2.7.5
1、直接做MD5
# -*- coding: utf-8 -*- import hashlib s = '20637332019-03-29已受理' md5 = hashlib.md5(s).hexdigest() # md5 = hashlib.md5(s.encode("utf-8")).hexdigest() # UnicodeDecodeError print(md5) 'a8027582770cfb7efc11f2abe75f9827'
2、引入新特性做MD5
# -*- coding: utf-8 -*- from __future__ import unicode_literals, print_function import hashlib s = '20637332019-03-29已受理' md5 = hashlib.md5(s.encode('utf-8')).hexdigest() # md5 = hashlib.md5(s).hexdigest() # UnicodeEncodeError print(md5) 'a8027582770cfb7efc11f2abe75f9827'
3、reload之后做MD5
# -*- coding: utf-8 -*- import hashlib import sys reload(sys) sys.setdefaultencoding("utf-8") s = '20637262019-03-29已受理' md51 = hashlib.md5(s).hexdigest() md52 = hashlib.md5(s.encode("utf-8")).hexdigest() print(md51) print(md52) """ a8027582770cfb7efc11f2abe75f9827 a8027582770cfb7efc11f2abe75f9827 """
通过测试
方式 |
直接做MD5 |
编码后做md5 |
直接做MD5 |
a8027582770cfb7efc11f2abe75f9827 |
UnicodeDecodeError |
引入新特性做MD5 |
UnicodeEncodeError |
a8027582770cfb7efc11f2abe75f9827 |
reload之后做MD5 |
a8027582770cfb7efc11f2abe75f9827 |
a8027582770cfb7efc11f2abe75f9827 |
Python3之后做MD5必须编码
所以推荐使用 引入新特性做MD5 也就是编码之后在做MD5