首页 > 解决方案 > 解码从 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 看起来像“标准”类型。

标签: pythonamazon-s3character-encodingmd5

解决方案


正如评论中有人建议的那样。我们不必将二进制文件转换为字符串。

所以这将是重新方法

contents = response['Body'].read()
md = hashlib.md5(contents).digest()
contents_md5 = base64.b64encode(md).decode('utf-8')

推荐阅读