我有Base64字符串。我试图解码它,然后解压缩它。我使用的减压无法转换Base64字符串并正确解压缩
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,我得到这个字符串以问号符号:
Детализирован��ый
什t是我的错误?以及如何解决它?
我确定它是由“UTF-8”编码的。按照你的建议,我尝试了这个'string.append(new String(data,0,bytesRead,“UTF-8”));'但它没有帮助。 –
我建议你在压缩/ base64之前和base64 /解压缩之前逐字节比较字节。和长度。另外,问问你自己是否应该在那里换行。 –