라틴어, 키릴 문자 및 중국어 문자가 포함 된 텍스트가 있습니다. GZIPOutputStream
으로 문자열 (bytes[]
이상)을 압축하고 GZIPInputStream으로 압축을 풀려고합니다. 그러나 모든 캐릭터를 원래 캐릭터로 다시 변환 할 수는 없습니다. 일부는 ?
으로 표시됩니다.GZIPInputStream 및 Characterset
나는 UTF-16이 그 일을 할 것이라고 생각했다.
어떤 도움이 필요합니까? 나는 그냥 문제가있어 콘솔의 의심
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.Inflater;
import java.util.zip.ZipException;
public class CompressUncompressStrings {
public static void main(String[] args) throws UnsupportedEncodingException {
String sTestString="äöüäöü 长安";
System.out.println(sTestString);
byte bcompressed[]=compress(sTestString.getBytes("UTF-16"));
//byte bcompressed[]=compress(sTestString.getBytes());
String sDecompressed=decompress(bcompressed);
System.out.println(sDecompressed);
}
public static byte[] compress(byte[] content){
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try{
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream);
gzipOutputStream.write(content);
gzipOutputStream.close();
} catch(IOException e){
throw new RuntimeException(e);
}
return byteArrayOutputStream.toByteArray();
}
public static String decompress(byte[] contentBytes){
String sReturn="";
ByteArrayOutputStream out = new ByteArrayOutputStream();
try{
GZIPInputStream gzipInputStream =new GZIPInputStream(new ByteArrayInputStream(contentBytes));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
for (int value = 0; value != -1;) {
value = gzipInputStream.read();
if (value != -1) {
baos.write(value);
}
}
gzipInputStream.close();
baos.close();
sReturn=new String(baos.toByteArray(), "UTF-16");
return sReturn;
// Ende Neu
} catch(IOException e){
throw new RuntimeException(e);
}
}
}
그'System.out.println (sTestString);은 무엇이라고 말합니까? 정크 메일도 표시되면 stdout 인코딩에 문제가있는 것입니다. 어떤 환경을 사용하고 있는지 (Windows 명령 프롬프트, Eclipse IDE 등) 알려줘야 제대로 구성 할 수 있습니다. – BalusC