diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java index b73907950..8c869e701 100644 --- a/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java +++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java @@ -514,11 +514,13 @@ private void done(Response resp) { String utf8 = new String(b); callback.invoke(null, RNFetchBlobConst.RNFB_RESPONSE_UTF8, utf8); } - // This usually mean the data is contains invalid unicode characters, it's - // binary data + // This usually mean the data is contains invalid unicode characters but still valid data, + // it's binary data, so send it as a normal string catch(CharacterCodingException ignored) { + if(responseFormat == ResponseFormat.UTF8) { - callback.invoke(null, RNFetchBlobConst.RNFB_RESPONSE_UTF8, ""); + String utf8 = new String(b); + callback.invoke(null, RNFetchBlobConst.RNFB_RESPONSE_UTF8, utf8); } else { callback.invoke(null, RNFetchBlobConst.RNFB_RESPONSE_BASE64, android.util.Base64.encodeToString(b, Base64.NO_WRAP));