最近从网上抓到一批图片,但是base64编码的格式,需要转成图片文件,解码的时候一直报错:
TypeError: Incorrect padding
网上查了一下,了解了下,大部分都说是因为base64编码时会增加=号处理,解决方法要么是拼上缺失的=号,要么是去掉多余的=号,都试了,不好使。。。
后来debug发现,数据末尾有\x3d,打印了下数据长度,发现长度不能被4整除,数据明显不对。将数据打印出来,然后单独用脚本运行,却可以,这样,下面的sample是base64源码,数据末尾有\x3d,这其实是个=号,
这样运行是可以的,debug发现运行时sample被自动转码了,显示成=而不是\x3d。长度刚好可以被4整除。问题找到了。。。
是编码的问题。应该将数据转成Unicode编码,转成Unicode后,\x3d会被编码成=,这时长度才是正确的。
img = eval('u"%s"' % img)
img则是需要转的图片的base64编码