UnicodeDecodeError:'utf-8'编解码器无法解码位置1中的字节0xe3:无效的连续字节

 何止爱你2010_694 发布于 2023-01-01 15:34

我想将一个字节变量转换为字符串.当然,以前有一些与我有关的问题.但是,尝试以这种方式在md5()中散列文件的内容:

import hashlib
with open("C:\\boot.ini","r") as f:
    r=f.read()
a=hashlib.md5()
a.update(r.encode('utf8'))
bytes_data=a.digest()
print(bytes_data)
r=type(bytes_data)
print(r) # <-- Just to be sure, it is in bytes 
myString=bytes_data.decode(encoding='UTF-8')

我收到了这个错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 1: invalid continuation byte

由于这个问题,我理解我的问题的原因,但是我正在处理不同的文件来计算它们的哈希,所以我无法控制字节,那么我该如何解决这个问题呢?

1 个回答
  • hash.digest()返回值是不是一个UTF-8编码的字符串.不要试图解码它; 它是一个字节序列在0-255范围内和这些字节都没有表示文本.

    并非所有bytes内容都编码文本; 这是一个这样的价值.

    hash.hexdigest()如果您想要可打印的东西,请使用.此方法返回表示为十六进制数的字节(每个摘要字节两个十六进制字符).这是与其他人共享MD5摘要时常用的形式.

    2023-01-01 15:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有