为什么php base64_decode返回null?

时间:2013-02-28 19:08:59

标签: php android base64

我已经将位图编码为java方法的Base64字符串。然后我将这个字符串作为JSON发送到php webservice,它将把它插入到longBlob中。

  

iVBORw0KGgoAAAANSUhEUgAAAtAAAAQOCAYAAADysw / 5AAAABHNCSVQICAgIfAhkiAAAIABJREFU \ neJzs3c1WG1maLuBwr76A8A004szPkuxxrxJ4Xghzxg6cfcbgco0L48weW .....

但出于某种原因,当我做的时候

$cust_sign = base64_decode($encodedString);

`$cust_sign` is `null`. 

这是我用来编码的:

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        b.compress(Bitmap.CompressFormat.PNG,50,baos);
        byte[] bytes=baos.toByteArray();
        String base64Image = Base64.encodeToString(bytes,Base64.DEFAULT);

我在php脚本中也有这个:

if (base64_decode($cust_sign, true)) 
   { 
       echo "valid"; 
   } 

它确实回应了有效的

你知道为什么吗?

谢谢

3 个答案:

答案 0 :(得分:2)

由于某种原因,您的字符串包含换行符(\ n)。删除它们,它应该工作。

编辑:尝试将Base64.encodeToString()中的第二个参数从Base64.DEFAULT更改为Base64.NO_WRAP。

答案 1 :(得分:1)

尝试添加strict参数以检查字符串是否包含base64字母表之外的字符。如果函数返回FALSE,则可能表示您有一个格式错误的base64字符串

答案 2 :(得分:0)

“\”不包含在Base64中。看来你的代码中有换行符“\ n”。这不是您的解码失败,而是您对内容进行编码的方式。使用您正在使用的流程更新您的问题,我将更多地编辑我的答案,以便更具体。