我有一个字节数组byteArray,它包含用Gzip压缩的数据。我想读取整个数组并使用适当的编码("ISO-8859-15")对数据进行解码。
GZIPInputStream gzipInputStream = new GZIPInputStream(new MemoryStream(personalDataArray));
InputStreamReader inputStream = new InputStreamReader(gzipInputStream);但是,当我试图用输入流读取器读取gzip输入流时,会出现编译器错误,它说不能从Java.Util.Zip.GZipInputStream转换为System.IO.Stream。不过,Java中不存在此问题。我怎么才能避开这一切?如何指定要使用的编码?谢谢。
发布于 2016-11-21 17:42:55
可以使用此方法解压缩GZip,使用GZipStream
这里有Xamarin医生。关于System.IO.Compression.GZipStream类
static byte[] Decompress(byte[] data)
{
using (var compressedStream = new MemoryStream(data))
using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
using (var resultStream = new MemoryStream())
{
zipStream.CopyTo(resultStream);
return resultStream.ToArray();
}
}你可以用Encoding.UTF8.GetString()来读,
var msg = Encoding.UTF8.GetString(Decompress(personalDataArray));此外,您还必须将UTF-8转换为ISO-8859-15 (Latin9),此示例用于ISO-8859-1 (Latin1),但尝试使用ISO8859-15。
var strISO88591= Encoding.GetEncoding("ISO-8859-1")
.GetString(Encoding.Convert(Encoding.UTF8,Encoding.GetEncoding("ISO-8859-1"), Encoding.UTF8.GetBytes(msg)));https://stackoverflow.com/questions/40725388
复制相似问题