This may be because you are writing a string using StreamWriter , but reading it using CopyTo() and Encoding.GetString() .
What happens if you try this?
// Reading it string foo; byte[] itemData = Convert.FromBase64String(bar); using (MemoryStream src = new MemoryStream(itemData)) using (GZipStream gzs = new GZipStream(src, CompressionMode.Decompress)) using (StreamReader reader = new StreamReader(gzs, Encoding.UTF8)) { foo = reader.ReadLine(); }
Although I think you should use BinaryReader and BinaryWriter :
string s = "Biography:\u003clink type..."; string bar; using (MemoryStream ms = new MemoryStream()) { using (GZipStream gzip = new GZipStream(ms, CompressionMode.Compress)) using (var writer = new BinaryWriter(gzip, Encoding.UTF8)) { writer.Write(s); } ms.Flush(); bar = Convert.ToBase64String(ms.ToArray()); }
source share