base64编码然后解码失败

时间:2017-04-04 07:08:29

标签: php android mysql

以下是从我的Android手机生成的base64编码的表情符号,当我尝试在浏览器中首先显示时保存到MySQL我需要检查字符串是否base64编码然后我解码并打印它,但下面的代码无法

$mystring = "8J+YgPCfmInwn5iZ8J+YkPCflIfwn5Oi8J+OtfCfjqfwn5C18J+QiPCfpoTwn5CX8J+MjfCfl7vw\nn4+f8J+PofCfj4Himb/wn5uC8J+atA==\n";

if (base64_encode(base64_decode($mystring)) == $mystring) {
    echo base64_decode($mystring);
} else {
    echo  $mystring;
}

但是,如果我直接解码相同的字符串并打印它

echo base64_decode($mystring);
// output ♿

然而,相同的代码适用于iOS手机生成的微笑。

$mystring = "8J+YgvCfkoHwn5iK8J+RqeKAjfCfkanigI3wn5Gn8J+ZiPCfpKPwn5mJ8J+QvPCfkLbwn5CT8J+MmeKaoe+4j/CfjY7wn42U8J+NlfCfpYPimr3vuI8=";

if(base64_encode(base64_decode($mystring)) == $mystring) {
    echo base64_decode($mystring);
} else {
    echo  $mystring;
}

//output  ‍‍⚡️⚽️ 

我不明白这个街区有什么问题:

if(base64_encode(base64_decode($mystring)) == $mystring)

1 个答案:

答案 0 :(得分:0)

if(base64_encode(base64_decode($mystring)) == $mystring)

您无法以这种方式比较两个字符串的内容。

使用strcmp()功能。

此外,如果$ mystring是base64编码,则无法以这种方式检查。

您将始终在编码字符串时获得真实,然后解码结果将始终提供原始字符串。

比较只会告诉您编码/解码是否有效。