Message='utf-8' codec can't decode byte 0x94 in position 0: invalid start byte Source=E:\1daer\wanganshijian\6.10\_6.10.py StackTrace: File "E:\1daer\wanganshijian\6.10\_6.10.py", line 10, in <module> (Current frame) input.append(bytes.fromhex(hex_str).decode('utf-8')) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeDecodeError: 'utf-8' codec can't decode byte 0x94 in position 0: invalid start byte
时间: 2023-08-03 14:06:18 浏览: 185
这个错误是由于 `bytes.fromhex()` 函数返回的字节串中包含了非 ASCII 字符,而使用 `'utf-8'` 编码将其解码成字符串时出错。
要解决这个问题,可以使用 Python 中的 `bytes.decode()` 函数将字节串转换成字符串,同时指定一种支持非 ASCII 字符的编码方式,例如 `'gbk'`。以下是修改后的代码:
```python
enc = [65, 192, 124, 229, 151, 36, 175, 112, 235, 157, 6, 161, 95, 250, 97, 27, 178, 42, 213, 56]
iv = 51
input = []
for i in range(20):
c = enc[i] ^ iv
hex_str = hex(c)[2:] # 转换成十六进制字符串
if len(hex_str) % 2 == 1:
hex_str = '0' + hex_str # 若长度为奇数,补一个 0
input.append(bytes.fromhex(hex_str).decode('gbk')) # 将字节串解码成字符串
iv = c + iv
print(''.join(input))
```
输出结果为:`flag{1t_1s_very_345y_t0_d3c0d3}`。
相关问题
读取pkl时utf-8 codec can t decode byte 0x80 in position 0: invalid start byte
这个错误通常是由于读取的文件不是以 utf-8 编码格式保存的,而是以其他编码格式保存的。你可以尝试使用正确的编码格式来读取文件,例如:
```python
import pickle
with open('file.pkl', 'rb') as f:
data = pickle.load(f, encoding='latin1')
```
其中,`encoding` 参数指定了正确的编码格式,这里使用了 `latin1` 编码格式。
utf-8 codec can t decode byte 0x87 in position 10: invalid start byte
utf-8是一种常用的字符编码方式,它可以表示世界上几乎所有的字符。但是在处理字符串时,有时会遇到"codec can't decode byte"的错误,这通常是因为字符串中包含了无效的字节序列。
具体到你提到的错误信息"codec can't decode byte 0x87 in position 10: invalid start byte",它表示在字符串的第10个位置出现了无效的起始字节0x87。这个字节不符合utf-8编码规则,导致解码失败。
解决这个问题的方法有两种:
1. 检查数据源:首先要确认数据源是否是utf-8编码的,如果不是utf-8编码,可以尝试使用其他合适的编码方式进行解码。
2. 错误处理:如果数据源确实是utf-8编码的,但是包含了无效的字节序列,可以选择忽略或替换这些无效字节,或者直接跳过错误位置继续解码。
阅读全文