为什么base64.encodeToString()与\ r \ n分开?

时间:2017-06-27 06:42:41

标签: java android base64

private String encryptBase64(String data){
    byte[] values = null;

    try{
        values = data.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    String encrypted = Base64.encodeToString(values, Base64.DEFAULT);
    encrypted.replace("\r\n", "");

    Log.i("base64", encrypted);
    return encrypted;
}

我使用此代码将一些数据编码为base64编码,但输出仍然用\ r \ n分割。并使我的JSONParser无法调用其URL。

屏幕截图:base64 Log

3 个答案:

答案 0 :(得分:2)

我有你的问题的解决方案,你必须使用URLEncoder编码这样的字符串来传递url。 示例:

private String encryptBase64(String data){
byte[] values = null;
try{
    values = data.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
String encrypted = Base64.encodeToString(values, Base64.DEFAULT);
// encrypted.replace("\r\n", "");
Log.i("base64", encrypted);
// =========== use this line of code ===============
    try {
            url_encode_val = URLEncoder.encode(encrypted, "utf-8");
            Log.e("encryptData_To url::", url_encode_val);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

return url_encode_val;
}

答案 1 :(得分:0)

只需替换encrypted = encrypted.replaceAll("(\\r|\\n|\\r\\n)+", "");而不是encrypted.replace("\n", "");

答案 2 :(得分:0)

你能做的是:

String stringAsProfImg = android.util.Base64.encodeToString(byteArrayOfImg, android.util.Base64.DEFAULT);

或者我正在做的是将位图图像转换为字节数组,然后将字节数组转换为BASE64字符串。

以下是一个例子:

ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                byteArrayOfImg = stream.toByteArray();
                bitmapImage.recycle();
                bitmapImage = null;
                stringAsProfImg =android.util.Base64.encodeToString(byteArrayOfImg, android.util.Base64.DEFAULT);