1

Java メソッドからビットマップを Base64 文字列にエンコードしました。次に、この文字列を JSON として、これを longBlob に挿入する php Web サービスに送信しました。

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"; 
   } 

どれが有効なエコーでしたか

理由はわかりますか?

ありがとうございました

4

3 に答える 3

2

何らかの理由で、文字列に改行 ( \n ) が含まれています。それらを削除すると、動作するはずです。

編集: Base64.encodeToString() の 2 番目のパラメーターを Base64.DEFAULT から Base64.NO_WRAP に変更してみてください。

于 2013-02-28T19:15:34.770 に答える
1

文字列に base64 アルファベット以外の文字が含まれているかどうかを確認するには、strict パラメータを追加してみてください。関数が FALSE を返す場合、base64 文字列の形式が正しくない可能性があります。

于 2013-02-28T19:31:12.853 に答える
0

「\」は Base64 には含まれません。コード「\n」に改行があるようです。失敗しているのはデコードではなく、コンテンツのエンコード方法です。使用しているプロセスで質問を更新してください。回答をより具体的に編集します。

于 2013-02-28T19:17:02.680 に答える