使用我正在使用的代码,每当编码消息的数据上有一个Enter
“时,我都会得到一个错误信息"?
。当在线使用解码器时,我会得到正确的值"Incorrect Padding"
和value1
都在下面,但是对于value2
应该有value2
的地方,我得到了例外。
代码是:
"?"
解码value1 = "Y29udGludWENCg=="
expected1 = b'continua\r\n'
value2 = "Y29udGludWE_DQo="
expected2 = b'continua?\r\n'
data1 = base64.b64decode(value1)
assert data1 == expected1
data2 = base64.b64decode(value2)
assert data2 == expected2
会引发value2
异常,但是数据具有正确的填充量(binascii.Error: Incorrect padding
的长度是4的倍数)。
答案 0 :(得分:0)
您没有标准的Base64数据,您具有 URL安全的base64数据。
Base64通常使用字母,数字以及/
和+
字符,但是后两个在URL中具有特殊含义,因此使用了Base64url encoding的替代方式,它使用了-
和_
个字符。
使用base64.urlsafe_b64decode()
function解码以下字符串:
data2 = base64.urlsafe_b64decode(value2)
演示:
>>> import base64
>>> value2 = "Y29udGludWE_DQo="
>>> base64.urlsafe_b64decode(value2)
b'continua?\r\n'