如何在python 3中使用base64编码字符串并删除新行

时间:2016-11-06 20:29:26

标签: python base64 encode python-3.5

背景:

我试图在python 3.5.2中将我的用户名和密码字符串编码为64位for SOAP请求。

代码:

username = 'Universal API/uAPI7054626850-8a6c09f0'
password = 'gaghw3d5WCw3QCzTMh3QJ5fDp'
base64string = '%s:%s' % (username, password)
resultValue = base64string.encode('base64', 'strict')

此代码已完全从以下示例中复制:https://www.tutorialspoint.com/python/string_encode.htm

错误:

Traceback (most recent call last):
File "soapRequests.py", line 44, in <module>
    resultValue = base64string.encode('base64', 'strict')
LookupError: 'base64' is not a text encoding; use codecs.encode() to handle arbitrary codecs

尝试:

Attempt 1: using the base64 codec
base64string = base64.encodestring(base64string).replace('\n', '')
Result: TypeError: expected bytes-like object, not str

如果您有任何想法如何将字符串编码为base64编解码器,请告诉我。感谢

答案:

我几乎不知道错误来自编码字符串后使用的替换函数。使用b64encode,这样您就不必编写自己的替换功能来替换新线路。

2 个答案:

答案 0 :(得分:2)

试试这个:

base64string = base64.b64encode( bytes(base64string, "utf-8") )

答案 1 :(得分:1)

base64的替代方案:

import codecs

codecs.encode(bytes("mystring", 'utf8'), 'base64')