考虑以下代码...
base64EncodedCredentials = base64.b64encode(b"johndoe:mysecret")
print(base64EncodedCredentials)
我得到的回复是
b'am9obmRvZTpteXNlY3JldA=='
为什么在字符串前有b?
如何只获取'am9obmRvZTpteXNlY3JldA =='的字符串值?从技术上讲,这个问题可以看作是另一个问题的重复。 IF 您知道问题出在字节字符串与字符串之间。就我而言,我问这个问题是因为我不知道有什么叫做字节字符串。对于新的Python程序员来说,这个问题可能是有益的,因为它使用了他们在程序或调试器上看到的语言。如果他们不知道字节字符串是什么,那么这个问题可能会有用,并提供从他们的问题到更熟练的Python程序员使用的技术术语的转换。问题在于词汇的使用。
答案 0 :(得分:2)
它正在返回一个字节对象。通常,base64用于确保7位安全,因此通常与面向字节(而不是面向字符)的数据一起使用,例如,用于拔出套接字。
您可以将其解码为字符串,就像其他任何字节对象一样:
output.decode('ascii')
使用encode()
和decode()
在字节和字符串对象之间进行更改。使用ascii
编解码器是安全的,因为可以保证base64仅返回7位ascii。
答案 1 :(得分:1)
请参阅this post摆脱编码。
print(base64EncodedCredentials.decode("utf-8"))