Unicode解码错误:'utf8'编解码器无法解码位置 3 中的字节0xa3:无效的起始字节



我正在使用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;事实并非如此。因此产生了错误。如果你有一个VGhpcyB3aWxsIGJlIHByaW50ZWQuCg==的密文,那将没有问题地打印出来,因为它解码为有效的UTF-8(实际上是有效的ASCII-7)。

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

但是,实际上,你真正应该做的是在打印之前解密它(而且,当你完成它时,验证它是UTF8文本,而不是用ISO-8859-15或其他字符集编码的)。如果是,您可以使用适当的编解码器;这个答案也提供了关于字符集的有用信息)

最新更新