python - 解码从 s3 下载的 zip 文件
问题描述
我正在尝试解码一个 zip 文件,以便从中创建一个 md5 哈希。
当我运行这个
contents = response['Body'].read()
decoded = contents.decode('utf-8')
我收到这个错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 10: invalid start byte
对我有用的是IBM437
contents.decode('IBM437')
整个哈希流程适用于 AWS 的ContentMD5
上传检查
我没有重新格式化它的上传方式我只是将它编码为非 utf-8 以创建一个有效的 md5 哈希
这样做有什么注意事项IBM437
,因为 utf-8 看起来像“标准”类型。
解决方案
正如评论中有人建议的那样。我们不必将二进制文件转换为字符串。
所以这将是重新方法
contents = response['Body'].read()
md = hashlib.md5(contents).digest()
contents_md5 = base64.b64encode(md).decode('utf-8')