我的脚本包括这一行:
encoded = "Basic " + s.encode("base64").rstrip()
Run Code Online (Sandbox Code Playgroud)
但给我回错误:
LookupError: 'base64' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Run Code Online (Sandbox Code Playgroud)
这条线似乎在 python 2 中工作正常,但自从切换到 3 后,我得到了错误
此字符串编解码器已在 Python 3 中删除。使用base64模块:
Python 3.6.1 (default, Mar 23 2017, 16:49:06)
>>> import base64
>>> base64.b64encode('whatever')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
>>> base64.b64encode(b'whatever')
b'd2hhdGV2ZXI='
>>>
Run Code Online (Sandbox Code Playgroud)
不要忘记将数据转换为字节。
代码如下:
base64.urlsafe_b64encode('Some String'.encode('UTF-8')).decode('ascii')
Run Code Online (Sandbox Code Playgroud)
例如: return {'raw': base64.urlsafe_b64encode(message.as_string().encode('UTF-8')).decode('ascii')}
为我工作。