Ich habe Base64 String. Ich versuche es zu entschlüsseln, dann dekomprimiere es.Kann nicht konvertieren Base64 String und ungzip es richtig
String textToDecode = "H4sIAAAAAAAAAAEgAN//0JTQtdGC0LDQu9C40LfQuNGA0L7QstCw0L3QvdGL0LmRCuyiIAAAAA==\n";
byte[] data = Base64.decode(textToDecode, Base64.DEFAULT);
String result = GzipUtil.decompress(data);
-Code, die ich für die Dekomprimierung bin mit:
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();
}
ich sollte diesen String erhalten:
Детализированный
Insteam davon, erhalte ich diese Zeichenfolge mit Fragezeichen-Symbole:
Детализирован��ый
Wha t ist mein Fehler? Und wie löst man es?
I identifiziert, dass es von "UTF-8" codiert wurde. Ihrem Vorschlag folgend, habe ich dieses 'string.append versucht (neuer String (Daten, 0, bytesRead," UTF-8 "));' Aber es hilft nicht. –
Ich schlage vor, dass Sie einen Byte-für-Byte-Vergleich des Bytes vor der Kompression/base64 und base64 nach/Dekompression tun. Und die Längen. Fragen Sie sich auch, ob diese Zeilenschaltung vorhanden sein sollte. –