Java GZIP字符串压缩无法解压缩'£';人物

Java GZIP字符串压缩无法解压缩'£';人物,java,character-encoding,compression,gzip,Java,Character Encoding,Compression,Gzip,我有以下用于压缩字符串的代码(为了清晰起见,删除了错误和资源处理): 我们在尝试编码并解码带有“*”的字符串时遇到错误。具体来说,字符串压缩正常,但在尝试解压缩字符串时,我们会得到以下堆栈跟踪: sun.io.MalformedInputException at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java(Compiled Code)) at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(

我有以下用于压缩字符串的代码(为了清晰起见,删除了错误和资源处理):

我们在尝试编码并解码带有“*”的字符串时遇到错误。具体来说,字符串压缩正常,但在尝试解压缩字符串时,我们会得到以下堆栈跟踪:

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)

有谁能告诉我我的错误的方式,我可以如何修复这种情况?有没有更好的办法?非常感谢。压缩数据时,应指定字符编码:

BufferedWriter writer = new BufferedWriter(
           new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8"));

如果没有,文本将根据系统默认字符编码转换为字节,在您的情况下,该编码不是UTF-8。

压缩数据时,您应该指定字符编码:

BufferedWriter writer = new BufferedWriter(
           new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8"));

如果不这样做,文本将根据系统默认字符编码转换为字节,在您的情况下,该编码不是UTF-8。

Superb!工作完美。谢谢你指出我(现在相当明显)的错误。太棒了!工作完美。谢谢你指出我(现在相当明显)的错误。