2014-09-30 194 views
-1

我有一个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,我尝试了下面的代码,但它给出了错误“'字节'对象没有属性'deocde'”。 base64.b64decode(encodedBase64String).deocde('utf-8')解码编码的base64字符串

+0

错误提示提示:'deocde'不存在。 'deocde'应该是'decode' – fredtantini 2014-09-30 18:32:35

+0

Plus,那不会给你UTF-16。 – 2014-09-30 20:46:21

+0

通过在反引号之间加入错误'',使用{}按钮将代码标记为代码,可以提高您的问题的可读性。还纠正拼写错误。 – 2014-09-30 21:02:18

回答

0

请阅读3.x base64模块的文档或文档字符串。该模块使用字节,而不是文本。所以你的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'