0
내가 가지고있는 우리가 (명확성을 오류 처리가 제거 된 자원과) 문자열을 압축하는 데 사용하는 코드를 다음에 시도 할 때GZIP 문자열 압축 '£'문자 압축 해제에 실패
import java.util.zip.GZIP*;
import java.io.*;
import java.util.zip.GZIPOutputStream;
import org.apache.commons.io.IOUtils;
import com.Ostermiller.util.Base64;
//Code to compress the string
ByteArrayOutputStream output = new ByteArrayOutputStream(65536);
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new GZIPOutputStream(output)));
writer.write(stringContents);
String compressedString = new String(Base64.encode(output.toByteArray()));
...
//Code to decompress the string
byte[] compressedData = Base64.decode(compressedString.getBytes());
BufferedInputStream reader = new BufferedInputStream(
new GZIPInputStream(new ByteArrayInputStream(compressedData)));
String uncompressedString = IOUtils.toString(reader, "UTF-8");
우리는 오류가 발생한 인코딩 한 다음 문자열을 '£'기호로 디코딩합니다. 특히, 문자열 확인을 압축,하지만 우리는 다음과 같은 스택 추적을 얻을 문자열을 압축 할 때 :
sun.io.MalformedInputException
at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java(Compiled Code))
at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(StreamDecoder.java:287)
at sun.nio.cs.StreamDecoder$ConverterSD.implRead(StreamDecoder.java:337)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:223)
at java.io.InputStreamReader.read(InputStreamReader.java:208)
at java.io.Reader.read(Reader.java:113)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1128)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1104)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1078)
at org.apache.commons.io.IOUtils.toString(IOUtils.java:382)
사람은 나에게 내 방식의 오류를 말할 수 내가이 상황을 해결하는 방법? 이 일을하는 더 좋은 방법이 있습니까? 미리 감사드립니다. 당신은 데이터를 압축 할 때
최고! 완벽하게 작동합니다. 내 (지금 명백한) 실수를 지적 해 주셔서 감사합니다. –