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 /減圧後のバイトのバイトごとの比較を行うことをお勧めします。そして長さ。また、改行がそこにあるかどうか自問してください。 –