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 に答える