解码编码的base64字符串

时间:2014-09-30 18:26:13

标签: python-3.x base64 decoding

我有一个base64编码的字符串S =“aGVsbG8 =”,现在我想将字符串解码为ASCII,UTF-8,UTF-16,UTF-32,CP-1256,ISO-8659-1,ISO- 8659-2,ISO-8659-6,ISO-8659-15和Windows-1252,如何将字符串解码为上述格式。对于UTF-16,我尝试了以下代码,但是它给出了错误“'bytes'对象没有属性'deocde'”。 base64.b64decode(encodedBase64String).deocde( 'UTF-8')

1 个答案:

答案 0 :(得分:0)

请阅读3.x base64模块的doc或docstring。该模块使用字节而不是文本。所以你的base64编码'字符串'将是一个字节字符串B = b"aGVsbG8"base64.decodebytes(B)的结果是字节;具有任何编码的二进制数据(文本或图像或......)。在这种情况下,它是b'hello',可以将其视为ascii编码的文本。要更改为其他编码,首先解码为unicode文本,然后以您想要的任何其他编码方式编码为字节。您在上面列出的大多数编码都具有相同的字节。

>>> B=b"aGVsbG8="
>>> b = base64.decodebytes(B)
>>> b
b'hello'
>>> t = b.decode()
>>> t
'hello'
>>> t.encode('utf-8')
b'hello'
>>> t.encode('utf-16')
b'\xff\xfeh\x00e\x00l\x00l\x00o\x00'
>>> t.encode('utf-32')
b'\xff\xfe\x00\x00h\x00\x00\x00e\x00\x00\x00l\x00\x00\x00l\x00\x00\x00o\x00\x00\x00'