字符串到 zip 文件

String to zip file

我使用的网络服务 returns 一个 zip 文件,作为一个字符串,而不是我预期的字节。我试图将它写入磁盘,但当我打开它时,它告诉我它已损坏。我做错了什么?

string cCsv = oResponse.fileCSV;//this is the result from webservice
MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(cCsv));
using (FileStream file = new FileStream("test.zip", FileMode.Create, FileAccess.Write))
{
    ms.WriteTo(file);
}
ms.Close();

我不确定字符串的编码类型,但假设 UTF-8, the following should work. UTF-16 是另一种猜测。

string cCsv = oResponse.fileCSV;
using (BinaryWriter bw = new BinaryWriter(File.Create("test.zip")))
{
    bw.Write(System.Text.Encoding.UTF8.GetBytes(cCsv));
}

查看返回的字符和原始字符串本身会提供很多信息。

编辑

根据 Frank 的回答,正确的编码是 base64,这当然是有道理的,因为它是存储为字符串的二进制数据。

此外,根据 Frank 的回答,如果唯一的操作是直接写入单个字节数组,那么 File.WriteAllBytes 更紧凑。

好的,我解决问题了:

File.WriteAllBytes("testbase64.zip", Convert.FromBase64String(cCsv));