Pergunta

Eu quero raspar dados de cadeia de alguns arquivos de texto binários que contêm embutidos instruções SQL. Eu não preciso de qualquer limpeza extravagante - apenas alguma maneira de extrair o texto legível. Estou usando vb.net, mas uma chamada para um utilitário externo iria trabalhar muito.

Foi útil?

Solução 4

Obrigado a todos. Ótimas ideias. Realmente me ajudou a pensar. Upvotes todo. Acabou Eu não precisa ser muito certo de que eles eram cordas então eu fui com um rápido, desleixado, feio, hack.

 '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)

Outras dicas

O utilitário GNU cordas tem sido em torno para sempre e faz mais ou menos exatamente isso usando uma heurística para arrancar quaisquer dados que "parece uma string" de um binário.

Grab as binutils GNU (incluindo cordas) para Win32 a partir MinGW: http://sourceforge.net/projects/mingw/files/ .

Isto não é tão trivial como pode parecer à primeira vista. A corda pode ser codificado de muitas maneiras. O que você considera "texto legível", como é que as partes ilegíveis olhar? Diga-se parece com isso:

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

você tiver sorte, porque é provável codificados usando UTF-16 ou outra codificação multibyte. Estes são bastante trivial de reconhecer. Mas em quase todos os outros casos (UTF-8, ISO-8859-1, o Windows-1252) é quase impossível distinguir um caráter individual por ser texto ou não-texto, a menos que você sabe um negócio justo de como um determinado "texto legível" começa e como ela termina.

O ponto é: tudo é permitido e considerado texto legível. UTF-8, ASCII e Windows-1252 permitem até mesmo caracteres nula (enquanto algumas linguagens de programação não). Aqui está uma segmento que dá um exemplo VB de como você pode prosseguir, ele pode lhe dar algumas dicas.

PS:. Analisar este tipo de dados pode ser difícil, ele vai ajudar muito se você poderia enviar o seu em algum lugar do arquivo para que possamos ter um olhar

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top