2014-09-30 247 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'