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();
}
}
GZip压缩的输出不是意味着是文本。它实际上是任意二进制内容,您应该只使用将解压为原始二进制内容…在您的例子中是utf -16编码的文本。您不应该期望能够将gzip文件作为文本文件来读取。
GZip本身不解释(二进制)数据,它只是压缩它,所以它可以忠实地解压缩以后。GZip不在乎它是文本,图像,声音文件,无论什么:它只是尽其所能压缩它。