Android base64 编码的字符串无效?

Android base64 encoded string invalid?

我在解码 Base64 编码图像时遇到问题。 例如我从服务器得到以下字符串:

data:image\/jpg; base64,\/9j\/4AAQSkZJRgABAQEAYABgAAD\/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQ
sJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz\/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA
wMDAwMDAwMDAwMDAwMDAz\/wAARCABFAOIDASIAAhEBAxEB\/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL\/8QAtRAAAgEDAwIE
AwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW
mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8v
P09fb3+Pn6\/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL\/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM
oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkp
OUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6\/9oADAMBAAIRAxEAPwD5rooor8
DP9oAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA9f8ADPhrTp\/Dmnu+n2
Tu9tGzM0CksSoyScVe\/wCEU0v\/AKBth\/4Dp\/hR4U\/5FbTf+vWL\/wBAFX6\/1HyHIcsllmGlLD023Th9iP8AKvI\/5YOPuPuJ6fE+Y06
eY10lXrJJVqlklUloveKH\/CKaX\/0DbD\/wHT\/Cj\/hFNL\/6Bth\/4Dp\/hV+vpT9pf9i7w\/8AC39nTwx4x8M6jrV\/qJsdMuvEltePE0
doL+38yGWIIqssfmJInzFjnHPBJ0xuEyPC1aVGth4J1HZfu42v56aXdkvNpHl5XxLxrmFGvWwuY12qMeeX7+pflW9lza2Sbfkm+h8uf8Ippf8
A0DbD\/wAB0\/wo\/wCEU0v\/AKBth\/4Dp\/hX0z+yL+x5oPxp+GPiLxJ4r1DWNPVUurfw\/BYPGjXtxbWkl1M8nmI2YUVY1O3ndJjIryf4e
\/AHxT8UNDl1PS7Kyj0yO6SwF7qWqWumW0tyylhBHJcyRrJLtGSiEsAQSACM5wpcPyq1aTo017Kyk3CKV5bWbVns166bm1TO+O4YbD4pY7EyV
fn5FGtVcrQtzNxUrrRprutdjz7\/AIRTS\/8AoG2H\/gOn+FH\/AAiml\/8AQNsP\/AdP8K9N8MfsveP\/ABj4t8QaDp3hm\/n1nwqvmarZMy
RzWi7wm4qzAsMsOVz8vzfd5qj41+AvijwB\/Yz6hY2klt4hdo9OvLDUrbULO7dX2Mi3FvI8W9WwCpbIyCQARXTHA5BKapRp0XJ9LQvqrrT019
NTjnxRx1ClKtPF4tQjdNupWsmnytN3srPR9npucB\/wiml\/9A2w\/wDAdP8ACj\/hFNL\/AOgbYf8AgOn+FehQfs9+L7n4tX\/gZNIz4p0z7
R9psvtUP7ryI2ll\/eb\/ACztRGPDHOMDJ4rjK2pZRktX+HQpPRPSMHo9nts7Oz620OavxrxlQv7fH4qNpSjrVqr3o25o6y+KN1zLdXV90UP+
EU0v\/oG2H\/gOn+FH\/CKaX\/0DbD\/wHT\/CvqvwZ+w9ofi79pfwT4QXUr2PRdd8LWWu6jJLqlnb3iyz2TzlbdZFHmKJFHyqjsqZLHA3Dxj
Tv2fPFGteM5NBsINJ1O9t7N9RuJrHW7G6sbO3QEvLNdxzNbxKuOTJIuCVB5YZ83Dx4drScY0qStFTd4wXutyXb+679lbuexi8349w8I1JY7Ey
UpOC5a1V3klB20l151bu7roed\/8ACKaX\/wBA2w\/8B0\/wo\/4RTS\/+gbYf+A6f4V6Pqn7OHjLSPG3h7w\/JpUUuoeLWjXRmtr+2ubTUi7
+WvlXMcjQN8\/ykh\/lPXFa0n7GvxLW2uWj8LzXU9jcRWt7ZWt3b3N\/p7yFhH9otY5GngVtpw0iKpGDnBGemWF4dik5Qoq+2kNdbafPT10OS
HEfHs3KMMVjG47+\/W005tddPd19NdjyL\/hFNL\/6Bth\/4Dp\/hR\/wiml\/9A2w\/8B0\/wrufiL8FPEfwr0\/TbzV7S0\/s\/WA5sr6w1
C21GzuSjbXVZ7eSSMup6ru3DIyORXK11UcmyatD2lKhSku6jBrTTou5wYnjfjDDVPZYjMMTCWmjq1U9dVo5dVqih\/wiml\/9A2w\/8B0\/wo
\/4RTS\/+gbYf+A6f4Vforb\/AFfyv\/oGp\/8AgEf8jn\/4iFxV\/wBDPEf+Dqn\/AMkUP+EU0v8A6Bth\/wCA6f4VR8TeGtOg8Oag6afZI6
W0jKywKCpCnBBxW7VDxX\/yK2pf9esv\/oBryc+yHLI5ZiJRw1NNU5\/Yj\/K\/I+t4B4+4nqcT5bTqZjXadeimnWqNNe0jo\/ePEqKKK\/y4
P+p8KKKKACiiigAooooAKKKKAPbfCn\/Irab\/ANesX\/oAq\/VDwp\/yK2m\/9esX\/oAq\/X+rnD\/\/ACK8N\/17h\/6Sj\/kz8Qv+SpzP
\/sIrf+nJBX3VqviazuPj54K8B6zMsWg\/E\/4U6N4fnaQ4SG6aAtaTfVZwgH++etfCtFRnGTRx\/LzS5eVSW3V2tJa7xaTXmcvDnEk8oc5U4
czk4PV6WjK7i1bVTV4vbRs+4vCGoWvg\/wDabt\/hhpNylzpPwx8Da1p000X+rvNRkspZb2Yf9tW2c8gRAdq4jw\/EfiT+xj8PLTwt8OtJ+Jm
o+FL7U7fXLD\/iZS3umSXEwlgm8iyuIXMckakeYyuoMW0FSCD8qUV5ceFeVxnGr7y5XezV5L2nNJ8sk\/f9rJ2TVnbdaHvT49UozovDr2cudJ
XT5YSVBQiuaEl+7VCKu4vmTekXqfYHhHx\/4h+IF3+0XqHibT9L0bXY\/AkVlc2emyForfymt4ghJlkbzAqhXDOWDBlYBgQOA0TUo9J\/YK8M
Xk+TFY\/E55SQMlVFjCzY\/wC+f0FfP1FdVLhyFN+7Ky5oOyW3JHlstXv87ba7nBiOMZ1o2nBt8tWN3JXftXe7tFK8fJK\/lsfemgfCDXD\/A
MFE\/GXjd7ZIPCep2Wq3+l6rLIEtdaS402UxLaOeJ32uXKoTtVHJxjn40sdX8Ex+CzBc+H\/FMviLyXUX0XiGCOyEhJ2N9mNkz7QNuV8\/LYO
GXPHLUVeWZDLDP97U5rQpwVrw0p81r2k735tVtpsTnnFkccm6FHkcqtarLmcaibrezuknBcqj7NWer137\/bWg6pbaR\/wUF+B8l3cQWsUngj
SbdXmkCKZJdKkjjXJ4yzuqj1LAVw37L\/g\/UfBXgP4veAtZ8GJc+PNZsNPutM8Oa7Hd2U2rw29w0s8cSxyQyu2zEiojgyeXwGAIr5eorl\/1
YfsnTVX7NNbPenUlUi9JJ2vKzW9tpJnYuOI+1jVlQvyyqP4la1WlCjNNODTfLBOLtZN6xkj6u8AeKPFlt8efgP4U8QeAtK+H2naR4rjvNN06N
LuK9\/fXMPmPJHd3Es6xsy\/ISFViH2ltrYzfhDqdz\/wlX7Tz\/aJ98\/hrVWkbzDmQnUYQST3yGYH\/AHj618x0VrLhuMotc6V0k9Hv7Tnb
1k3r1u99fIwp8aShOEvZtqMlJXkloqfs1H3YRVlurJWWlup71raA\/wDBM\/QWwNw+Il2AccgHT4s\/yH5V4LRRXs4HB\/VlNXvzSlL0v0Pm8
zzL64qK5eX2cIw3ve19dlbfbX1Ciiiu48sKoeK\/+RW1L\/r1l\/8AQDV+qHiv\/kVtS\/69Zf8A0A15HEH\/ACK8T\/17n\/6Sz7Dw9\/5Kr
LP+wij\/AOnIniVFFFf5RH\/WYFFFFABRRRQAUUUUAFFFFAHb6V8Yv7M0u2tv7O3\/AGeJYt32jG7aAM42+1T\/APC8f+oZ\/wCTP\/2NcDRX
6vh\/G\/jahSjQpY20YpJL2dHZaL\/l2fyZmH0GvBHHYqrjcVknNUqSlKT+s4tXlJtt2WISV29kkux33\/C8f+oZ\/wCTP\/2NH\/C8f+oZ\/
wCTP\/2NcDRW3\/Ed+Of+g7\/ylR\/+VnH\/AMSFeBP\/AEIv\/LrGf\/NB33\/C8f8AqGf+TP8A9jR\/wvH\/AKhn\/kz\/APY1wNFH\/Ed+
Of8AoO\/8pUf\/AJWH\/EhXgT\/0Iv8Ay6xn\/wA0Hff8Lx\/6hn\/kz\/8AY0f8Lx\/6hn\/kz\/8AY1wNFH\/Ed+Of+g7\/AMpUf\/lYf8S
FeBP\/AEIv\/LrGf\/NB33\/C8f8AqGf+TP8A9jR\/wvH\/AKhn\/kz\/APY1wNFH\/Ed+Of8AoO\/8pUf\/AJWH\/EhXgT\/0Iv8Ay6xn\/w
A0Hff8Lx\/6hn\/kz\/8AY0f8Lx\/6hn\/kz\/8AY1wNFH\/Ed+Of+g7\/AMpUf\/lYf8SFeBP\/AEIv\/LrGf\/NB33\/C8f8AqGf+TP8A9j
R\/wvH\/AKhn\/kz\/APY1wNFH\/Ed+Of8AoO\/8pUf\/AJWH\/EhXgT\/0Iv8Ay6xn\/wA0Hff8Lx\/6hn\/kz\/8AY0f8Lx\/6hn\/kz\/8
AY1wNFH\/Ed+Of+g7\/AMpUf\/lYf8SFeBP\/AEIv\/LrGf\/NB33\/C8f8AqGf+TP8A9jR\/wvH\/AKhn\/kz\/APY1wNFH\/Ed+Of8AoO\/
8pUf\/AJWH\/EhXgT\/0Iv8Ay6xn\/wA0Hff8Lx\/6hn\/kz\/8AY1Bqvxi\/tPS7m2\/s7Z9oiaLd9ozt3AjONvvXEUVliPHDjavSlRq428Z
Jpr2dHZ6P\/l2dmX\/Qa8EcDiqWNwuSctSnKM4v6zi3aUWmnZ4hp2a2aa7hRRRX5Of1mFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB\/9k=

我在这里找到的 Online Tool 正确解码了该字符串,但代码 我在这里使用:

byte[] imageAsBytes = Base64.decode(imageString.getBytes(), Base64.DEFAULT);

Bitmap bitmap = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length);

产生错误:

02-02 19:16:56.460: E/AndroidRuntime(18237): java.lang.IllegalArgumentException: bad base-64

那么问题出在哪里呢?我想如果它不是有效的 Base64 编码字符串,我提供的 link 中的在线工具也无法解码它。

编辑

找到另一个 Online Tool 它告诉:

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.

但它没有说明位置。我删除了填充 '=' 但它没有改变。

我不知道这是正确的解决方案,但就我而言,我从上面的响应中删除了 data:image\/jpg; base64, 的起始部分,它对我有用。这是不是编码数据部分的数据。