Вам нужно сначала преобразовать байты в символы.Для этого вам нужно знать кодировку.
В вашем коде вы могли бы заменить new String(data, 0, bytesRead)
на Encoding.UTF8.GetString(data, 0, bytesRead)
, чтобы сделать это.Тем не менее, я бы справился с этим немного по-другому.
StreamReader
- это полезный класс для чтения байтов как текста в C #.Просто оберните его вокруг вашего GZipStream
и позвольте ему творить чудеса.
public static string Decompress(Stream input)
{
// note this buffer size is REALLY small.
// You could stick with the default buffer size of the StreamReader (1024)
const int BUFFER_SIZE = 32;
string result = null;
using (var gis = new GZipStream(input, CompressionMode.Decompress, leaveOpen: true))
using (var reader = new StreamReader(gis, Encoding.UTF8, true, BUFFER_SIZE))
{
result = reader.ReadToEnd();
}
return result;
}