You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python3.6中UTF-8字符串Base64解码报错Incorrect Padding求助

解决Base64解码时的binascii.Error: Incorrect Padding错误

你碰到的这个填充错误,问题出在编码步骤的str()转换上。让我给你拆解一下:

  • base64.b64encode()本身返回的是bytes对象,比如b'aGFzbmkgemluZGEgaGEgdSBhcmUgbXkgbWFuIGJveSB5ZXMgdSBhcmUgIA=='
  • 你直接用str()把这个bytes转成字符串时,会保留外层的b''标记,最终得到的字符串是"b'aGFzbmkgemluZGEgaGEgdSBhcmUgbXkgbWFuIGJveSB5ZXMgdSBhcmUgIA=='"。这串字符里的b'和末尾的'都是无效的Base64字符,解码时自然会触发填充错误。

修正方案

只需要把编码步骤里的str()替换成.decode('utf-8'),就能得到纯Base64格式的字符串:

正确的编码代码

import base64

# 用decode将bytes类型的Base64编码转换为纯字符串
a = base64.b64encode(bytes('hasni zinda ha u are my man boy yes u are ', "utf-8")).decode('utf-8')
print('Encoding :' + a)

对应的解码代码

这时候再用你原来的解码逻辑就可以正常工作了:

b = base64.b64decode(a).decode("utf-8", "ignore")
print('Decoding:' + b)

运行后你会看到编码后的结果是干净的Base64字符串,解码也能正确还原出原始文本。

内容的提问来源于stack exchange,提问作者Muhammad Hassan

火山引擎 最新活动