我有一个程序,可以从二进制格式的url中获取响应,但我不知道如何将其转换为文本文件。
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postString);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
Stream ReceiveStream = response.GetResponseStream();
string filename = "C:\\responseGot.txt";
byte[] buffer = new byte[1024];
FileStream outFile = new FileStream(filename, FileMode.Create);
int bytesRead;
while ((bytesRead = ReceiveStream.Read(buffer, 0, buffer.Length)) != 0)
outFile.Write(buffer, 0, bytesRead);当我打开responseGot.txt时,它是一个二进制文件,我如何获取文本文件。
发布于 2013-12-06 19:25:36
你得到的响应是什么格式的?没有文本文件。只有二进制文件。HTTP也是100%二进制的。
文本是对字节的解释,它只作为正在运行的应用程序的一部分存在。您永远不能向文件中写入文本。您只能将文本转换为字节(使用各种方式)并写入字节。
因此,问问你自己,为什么你收到的字节不能被notepad.exe解释为文本。也许响应不是直接的文本,而是一个ZIP文件或其他什么。
发布于 2013-12-06 19:17:18
您没有在代码示例中显示将文件保存到任何位置。
但是要将响应转换为字符串,您可以使用:
using (HttpWebResponse response = req.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string ResponseTXT = reader.ReadToEnd();
}然后你可以用常用的技术http://msdn.microsoft.com/en-us/library/6ka1wd3w%28v=vs.110%29.aspx保存它。
你是认真的吗?
发布于 2020-10-25 12:12:19
如今在数字计算中表示的每一个数据都是基于2比特的。二进制(电/磁信号:开/关或北/南)。写入磁盘的每个文件也是二进制文件,即。(8位)字节序列。ASCII/ANSI为每个字节序列定义了字符映射,256个字节中只有大约95个被称为可打印(文本)字符。
您下载的文件似乎不只是可打印的字符(通常称为纯文本文件)。要按原样查看文件(使用当前编码设置),请执行以下操作:
type <file.ext>要在其他代码页中查看,请执行以下操作:
chcp <codepage>
type <file.ext>要查看文件的(纯文本)表示,您需要首先对其进行编码(即.将其翻译成文本文件)例如。十六进制编码的字符串通过一些十六进制编辑器。十六进制序列的前几个字符应该给出一个magic number,表示正在读取的文件类型。然后使用相关的程序打开该文件(该程序能够打开这些类型的文件)。
如果是您期望的文本文件,而不是仅包含可打印(纯文本)字符的文件,则更有可能是对其应用了某种压缩/加密。再一次,魔术数字应该暗示文件应该如何处理,例如。在尝试读取数据/文件之前解压缩。(加密文件应附带解密提示/密钥,除非之前交换/同意)
https://stackoverflow.com/questions/20422257
复制相似问题