5

它给了我一个错误,编码的行需要是字节而不是 str/dict

我知道在文本之前添加一个“b”会解决这个问题并打印编码的东西。

import base64
s = base64.b64encode(b'12345')
print(s)
>>b'MTIzNDU='

但是如何对变量进行编码?如

import base64
s = "12345"
s2 = base64.b64encode(s)
print(s2)

添加和不添加 b 时,它给了我一个错误。我不明白

我也在尝试使用 base64 对字典进行编码/解码。

4

1 回答 1

11

您需要对 unicode 字符串进行编码。如果只是普通字符,则可以使用 ASCII。如果它可能包含其他字符,或者只是为了一般安全,您可能需要utf-8.

>>> import base64
>>> s = "12345"
>>> s2 = base64.b64encode(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ". . . /lib/python3.3/base64.py", line 58, in b64encode
    raise TypeError("expected bytes, not %s" % s.__class__.__name__)
TypeError: expected bytes, not str
>>> s2 = base64.b64encode(s.encode('ascii'))
>>> print(s2)
b'MTIzNDU='
>>> 
于 2013-06-08T15:52:13.713 回答