GZipStream创建一个无效的字符集

本文关键字:一个 无效 字符集 创建 GZipStream | 更新日期: 2023-09-27 18:19:14

我有一个简单的函数来创建gzip文件。这个函数运行良好,通过了单元测试。然后我在amazon s3上托管生成的文件。

但是当输入值包含unicode字符时,它会产生一些无效字符。

。;> 9ÎvøS‰

public static void CompressStringToFile(string fileName, string value)
{
    // Use GZipStream to write compressed bytes to target file.
    using (FileStream f2 = new FileStream(fileName, FileMode.Create))
    using (GZipStream gz = new GZipStream(f2,CompressionMode.Compress, false))
    {
        byte[] b = Encoding.Unicode.GetBytes(value);
        gz.Write(b, 0, b.Length);
        gz.Flush();
    }
}

GZipStream创建一个无效的字符集

GZip压缩的输出不是意味着是文本。它实际上是任意二进制内容,您应该只使用解压为原始二进制内容…在您的例子中是utf -16编码的文本。您不应该期望能够将gzip文件作为文本文件来读取。

GZip本身不解释(二进制)数据,它只是压缩它,所以它可以忠实地解压缩以后。GZip不在乎它是文本,图像,声音文件,无论什么:它只是尽其所能压缩它。

相关文章: