从Python中的Base64编码字符串获取字符串

2 投票
1 回答
1809 浏览
提问于 2025-04-18 17:07

我需要用Python向一个REST服务器发送请求。在请求的头部认证中,我需要包含一个经过Base64编码的字符串。

我使用base64模块来实现这个:

import base64
#node here is '3180' but I also tried with text
node = base64.b64encode(node.encode('utf-8'))
node = 'Basic ' + str(node)
headers = {'Content-type': 'application/json', 'Authentication': node}
print(headers)

然后我打印出来的结果是:

{'Authentication': "Basic b'MzE4MA=='", 'Content-type': 'application/json'}

这个结果中有b' ... '这样的字符加在了Base64字符串前面。我想知道有没有办法让这些字符不出现?我不确定它们只是打印出来的,还是也会发送到服务器。

1 个回答

4

b64encode 返回的是 bytes 类型,而不是 str 类型。当你直接用 str() 去处理它,而没有指定编码时,得到的不是你想要的字符串,而是 Python 对这个字节对象的表示,比如 b'MzE4MA=='

为了避免这个问题,可以使用 node = 'Basic ' + node.decode('ascii') 这样的写法。

另外,你也可以用 str(node, encoding='ascii'),不过这样写会稍微长一些。

撰写回答