首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何从GZIPInputStream中读到Xamarin.android?

我如何从GZIPInputStream中读到Xamarin.android?
EN

Stack Overflow用户
提问于 2016-11-21 16:55:51
回答 1查看 239关注 0票数 1

我有一个字节数组byteArray,它包含用Gzip压缩的数据。我想读取整个数组并使用适当的编码("ISO-8859-15")对数据进行解码。

代码语言:javascript
复制
GZIPInputStream gzipInputStream = new GZIPInputStream(new MemoryStream(personalDataArray));
InputStreamReader inputStream = new InputStreamReader(gzipInputStream);

但是,当我试图用输入流读取器读取gzip输入流时,会出现编译器错误,它说不能从Java.Util.Zip.GZipInputStream转换为System.IO.Stream。不过,Java中不存在此问题。我怎么才能避开这一切?如何指定要使用的编码?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-21 17:42:55

可以使用此方法解压缩GZip,使用GZipStream

这里有Xamarin医生。关于System.IO.Compression.GZipStream类

代码语言:javascript
复制
 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()来读,

代码语言:javascript
复制
var msg = Encoding.UTF8.GetString(Decompress(personalDataArray));

此外,您还必须将UTF-8转换为ISO-8859-15 (Latin9),此示例用于ISO-8859-1 (Latin1),但尝试使用ISO8859-15。

代码语言:javascript
复制
var strISO88591= Encoding.GetEncoding("ISO-8859-1")
                 .GetString(Encoding.Conver‌​t(Encoding.UTF8,Encoding.GetEncoding("ISO-8859-1"), Encoding.UTF8.GetBytes(msg)));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40725388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档