【问题标题】:Decoding of a encoded base64 string编码 base64 字符串的解码
【发布时间】:2014-09-30 18:26:12
【问题描述】:

我有一个 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' object has no attribute 'deocde'”。 base64.b64decode(encodedBase64String).deocde('utf-8')

【问题讨论】:

  • 错误提示:deocde不存在。 deocde 应该是 decode
  • 另外,它不会给你 UTF-16。
  • 请将错误放在反引号 `` 之间,让您的问题更具可读性,并使用 {} 按钮将代码标记为代码。同时更正拼写错误。

标签: python-3.x base64 decoding


【解决方案1】:

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

>>> 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'

【讨论】:

    猜你喜欢
    • 2012-11-13
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2021-10-27
    • 2018-01-27
    相关资源
    最近更新 更多