【发布时间】:2020-09-01 04:52:57
【问题描述】:
我需要解码一个 base64 编码的字符串。
我需要使用 PHP。
base64_decode() 不能胜任。
我试过了:
base64_decode(strtr($data, '-_,', '+/='));
...它只在某些时候有效。
同样的情况发生在:
base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
我真的不知道如何解决这个问题。
更新:
数据来自attached file via GMAIL API。
我将它保存到数据库中,utf8mb4 TEXT 字段。
我在插入之前会mysqli -> real_escape_string()。
然后我将其从数据库中提取为 $data。
【问题讨论】:
-
如果它不适用于
base64_decode(),那么它可能不是 base64 编码的字符串。它可能已通过管道损坏。你能举个例子和你的预期输出吗? -
@ishegg 我用更多信息更新了这个问题。
-
我明白了。您无法提供 bas64 编码字符串的示例吗?否则很难在黑暗中帮助你。
-
In the docs 它说的是
a base64url encoded,所以如果你可以在字符串中看到%3D,你只需要$attch = base64_decode(urldecode($in))就可以了。 -
@LawrenceCherone 谢谢,我也试过了。但它也没有工作。 (另外,字符串中没有
%3D)