我要刮串数据从一些二进制文本文件,含有内嵌SQL发言。我不需要任何花式清理-只是某种方式提取的可读的文本。我在使用vb.net但呼叫一个外部实用会的工作。

有帮助吗?

解决方案 4

感谢所有。伟大的思想。真的帮了我的想法。各地Upvotes。结束了我并不需要非常肯定的说他们是字符串,所以我有一个快速的,草率的,丑陋的,黑客攻击。

 'strip out non-string characters 
 For Each b As Byte In byteArray
      If b = 9 Or b = 10 Or b = 13 Or (b > 31 And b < 127) Then
          newByteArray(i) = b.ToString
          i += 1
      End If
  Next

  'move it into a string
  resultString = System.Text.Encoding.ASCII.GetString(newByteArray)

其他提示

在GNU串实用程序一直围绕永远和确实更多或更少的正是这种通过使用启发式算法来抽出任何数据“看起来像一个字符串”从二进制。

抓斗为Win32从MinGW的GNU的binutils的(包括字符串):   http://sourceforge.net/projects/mingw/files/

这不是如此微不足道的,因为它可能似乎第一次。一串可以编码在许多方面。什么你考虑"可读的文本",怎么不可读的部分看看吗?说它看起来像这样:

 &8)JÓxZZ`\■£ÌS?E?L?E?C?T?*?F?R?O?M?m?y?T?b?l?§ıÍ4¢

你是幸运的,因为它有可能使用编码UTF-16或另一个字节的编码。这些是相当琐碎的认识。但在几乎所有其他情况下(UTF-8,ISO-8859-1,Windows-1252)这是不可能分辨出一个人的性格在文本或非文本,除非你知道一个公平的处理如何在一定的"可读的文本"的开始和它如何结束。

点是:什么是允许的,并认为可读的文本。UTF-8,ASCII和Windows-1252允许甚至空字符的(虽然一些编程语言不)。 这里有一个线程 给VB例可以如何继续进行,它可能会给你一些提示。

PS:分析这类数据可能很难,它将有很大帮助如果你能上传文件的某个地方所以我们可以看一看。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top