2016-11-21 4 views
1

私はGzipで圧縮されたデータを含むバイト配列のバイト配列を持っています。私は配列全体を読み込み、適切なエンコーディング( "ISO-8859-15")を使ってデータをデコードしたいと思います。Xamarin.androidのGZIPInputStreamから読み込むにはどうすればよいですか?

GZIPInputStream gzipInputStream = new GZIPInputStream(new MemoryStream(personalDataArray)); 
InputStreamReader inputStream = new InputStreamReader(gzipInputStream); 

入力ストリームリーダーでGZIP入力ストリームを読み込むしようとしたとき、私は、コンパイラのエラーを取得するしかし、それはJava.Util.Zip.GZipInputStreamからSystem.IO.Streamに変換することはできませんと言います。 Javaではこの問題は発生しません。これをどうやって回避するのですか?使用するエンコーディングを指定するにはどうすればよいですか?ありがとう。

答えて

1

あなたはXamarinドキュメントを持っている。ここGZipStream

を使用し、GZipを解凍するために、このメソッドを使用することができます。およそSystem.IO.Compression.GZipStream Class

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)); 

はまた、あなたがISO-8859-15(Latin9)にUTF-8に変換する必要があり、このサンプルでは、​​ISO-8859-1のためであります1(Latin1)ですが、ISO-8859-15で試してください。

var strISO88591= Encoding.GetEncoding("ISO-8859-1") 
       .GetString(Encoding.Conver‌​t(Encoding.UTF8,Encoding.GetEncoding("ISO-8859-1"), Encoding.UTF8.GetBytes(msg))); 
関連する問題