UnicodeDecodeError:' utf8'编解码器不能解码位置3中的字节0xa3:无效的起始字节

时间:2016-11-01 21:52:27

标签: python unicode encoding decoding

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

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

import base64

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

ciphertext = base64.b64decode(ciphertext)

print ciphertext
  

UnicodeDecodeError:' utf8'编解码器不能解码位置3中的字节0xa3:无效的起始字节

1 个答案:

答案 0 :(得分:3)

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

你的终端假设如果你打印一些东西,那东西是UTF8;和it is not. Hence the error。如果你有一个VGhpcyB3aWxsIGJlIHByaW50ZWQuCg==的密文,它会被打印出来没有问题,因为它解码为有效的UTF-8(实际上是有效的ASCII-7)。

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

但是,实际上,你应该做的是在打印之前对其进行解密(同样,当你完成它时,验证它是UTF8文本,而不是,例如,用ISO-8859-15或其他字符集编码)如果是,你可以使用适当的编解码器; this answer也提供关于字符集的有用信息。)