【问题标题】:Downloading blob text returning strange text下载返回奇怪文本的 blob 文本
【发布时间】:2016-12-07 13:27:58
【问题描述】:

我正在下载我上传的一个 blob 的文本,但返回的文本包含很多行话,例如:

��\u0011\u0871\u001a�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\0\u0003\0��\t\0\u0006\0\0\0\0\0\0\0\0\0\0\0\u0003\0\0\02\u0001\0\0\0\0\0\0\0\u0010\0\05\u0001\0\0\u0001\0\0\0����\0\0\0\0/\u0001\0\00\u0001\0\01\u0001\0\0�����������������������������������������������

我正在使用以下下载文本:

string FileText = "";
FileText = blockBlob.DownloadText();

我也尝试了以下方法(建议)但没有解决问题:

 FileText = blockBlob.DownloadText(Encoding.UTF8);

我还尝试了以下方法:

 FileText = blockBlob.DownloadText(Encoding.Unicode);

有没有办法避免包含这个行话?

感谢您的帮助!

【问题讨论】:

  • blob 编码的格式是什么?此外,这始终是有关该主题的好读物:joelonsoftware.com/2003/10/08/… 这有助于您理解“行话”,以及为什么包含它。
  • 谢谢。读起来很有趣。
  • 对不起,回答你的问题,我相信 DownloadText 默认使用 UTF-8

标签: c# azure azure-blob-storage


【解决方案1】:

"\u0011\u0871\u001a"(通过 UTF8)由字节 0x11 0xE0 0xA1 0xB1 0x1A 组成,它们构成复合文件的标头的一部分,在这种情况下,它似乎用于 Microsoft Word .Doc 文件。

将它下载到一个字节数组中,您将拥有可以写入磁盘的任何内容。

【讨论】:

  • 谢谢。你能不能提供一个例子。我对这一切都很陌生
  • 什么是“文件文本”?它的类型是什么?如果将其转换为字节数组,则可以轻松地将其写入扩展名为 .doc 的文件,并查看它是否确实作为 Word 文档打开。您可以简单地使用 File.WriteAllBytes(string path, byte[] bytes)。
  • 感谢您的回复。我正在将 .doc 文件上传到 blob 存储并尝试从该 blob 中检索文本,以便我可以从中提取某些内容,因此不幸地将其再次写入 .doc 并不能解决我的问题。我已将其写入字节数组(byte[]),然后尝试使用编码中的 GetString() 将其转换回 UTF8,但我得到了相同的结果。还有其他建议吗?
  • 恐怕这行不通; Word 文件不是文本,它是二进制文件,您不能将其视为文本文件并简单地从中读取。您需要上传纯文本或下载 .doc 并使用 Word 互操作或类似的 C# 以编程方式访问文档,然后访问其中包含的文本。
猜你喜欢
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2019-10-28
  • 2011-08-24
  • 1970-01-01
  • 2021-01-15
  • 2018-04-23
相关资源
最近更新 更多