UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 3: invalid start byte

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 3: invalid start byte

我正在使用 repl.it Python web IDE,我真的无法用它解决问题。

我试图解码一个字符串,但似乎没有办法。

import base64

ciphertext = 'FxM7o1wl/7wE9CHPNzbB944feDFXbTSVaJfaLsUMzH5EP4xZRz7Sq8O3y7+jPbXIMVRxpvJZZm7ugqQ4fwpJwtvnB0/BoU+hhGeEZZZ0fFj1irm/zg3bsxOoxBJx4B3U'

ciphertext = base64.b64decode(ciphertext)

print ciphertext

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 3: invalid start byte

你不能打印 ciphertext,因为它是一个无意义的二进制字节序列,根本不是文本(我查过了)。

您的终端假定如果您打印某些内容,则该内容是 UTF8;和 it is not. Hence the error。如果你有 VGhpcyB3aWxsIGJlIHByaW50ZWQuCg== 的密文,那将毫无问题地打印出来,因为它解码为有效的 UTF-8(实际上是有效的 ASCII-7)。

如果要显示密文,可以将非UTF8字符替换成空格,也可以将密文打印成十六进制。

但是,实际上,您真正应该做的是在打印之前对其进行解密(另外,完成后,验证它是 UTF8 文本,而不是,比如说,以 ISO-8859-15 或其他字符集编码. 如果是,您可以使用适当的编解码器;this answer 还提供有关字符集的有用信息)。