【问题标题】:Using Base64 in android在安卓中使用 Base64
【发布时间】:2014-01-10 19:21:06
【问题描述】:

我正在将我的图像转换为字节数组,然后转换为 base64 字符串,它可以完美地进行转换和解码,但是当我使用 php 将该字符串保存到 mysql 数据库并从数据库中检索它时,它不会解码并说 base64 错误

这是我的代码。

php

$sql = "insert into users(username, password, email,mob,imagetext)
                            values ('".$username."', '".$password."', '".$email."', '".$mob."', '".$imageText."') ";                            

安卓

编码

 ByteArrayOutputStream baos = new ByteArrayOutputStream();  
 Bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
 byte[] b = baos.toByteArray();
 String imageEncoded = Base64.encodeToString(b,Base64.DEFAULT);

解码

 byte[] decodedByte = Base64.decode(value, Base64.DEFAULT);                     
 b = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);

【问题讨论】:

  • 我认为它会在保存到 mysql 之前包装字符串。
  • 你没有提供php解码功能...
  • 我使用 PHP 作为文本插入编码和解码由 android 代码处理。那是正确的方法吗?我是编码新手!

标签: php android mysql http base64


【解决方案1】:

尝试从 Base64.DEFAULT 更改 Base64 编码选项。 您应该使用 Base64.URL_SAFE ,它将使用在发送到您的 php 脚本时不需要进行 url 编码的字符。 还可以考虑使用 Base64.NO_WRAP,它会阻止 MIME 新行添加到您的 base 64 输出中。

【讨论】:

    【解决方案2】:

    根据以上回答, 编码:

     String imageEncoded = Base64.encodeToString(b,Base64.NO_WRAP | Base64.URL_SAFE);
    

    解码:

     byte[] decodedByte = Base64.decode(value, Base64.NO_WRAP | Base64.URL_SAFE);       
    

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 2014-05-25
      • 2013-08-27
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多