У меня есть Base64 String. Я пытаюсь его расшифровать, а затем распаковать.Невозможно преобразовать Base64 String и правильно установить его
String textToDecode = "H4sIAAAAAAAAAAEgAN//0JTQtdGC0LDQu9C40LfQuNGA0L7QstCw0L3QvdGL0LmRCuyiIAAAAA==\n";
byte[] data = Base64.decode(textToDecode, Base64.DEFAULT);
String result = GzipUtil.decompress(data);
код, который я использую для декомпрессии:
public static String decompress(byte[] compressed) throws IOException {
final int BUFFER_SIZE = 32;
ByteArrayInputStream is = new ByteArrayInputStream(compressed);
GZIPInputStream gis = new GZIPInputStream(is, BUFFER_SIZE);
StringBuilder string = new StringBuilder();
byte[] data = new byte[BUFFER_SIZE];
int bytesRead;
while ((bytesRead = gis.read(data)) != -1) {
string.append(new String(data, 0, bytesRead));
}
gis.close();
is.close();
return string.toString();
}
Я должен получить эту строку:
Детализированный
Insteam его, я получаю эту строку с вопросительным знаком символов:
Детализирован��ый
Wha Это моя ошибка? И как его решить?
Я определил, что он был закодирован «UTF-8». Следуя вашему предложению, я попробовал этот 'string.append (новый String (data, 0, bytesRead,« UTF-8 »));« Но это не помогает. –
Я предлагаю вам побайтовое сравнение байтов перед сжатием/base64 и после base64/декомпрессии. И длины. Кроме того, спросите себя, должна ли эта новая строка быть там. –