Question

Je veux gratter les données de chaîne à partir des fichiers binaires texte qui contiennent des instructions SQL imbriquées. Je ne pas besoin de nettoyage fantaisie - juste un moyen d'extraire le texte lisible. J'utilise vb.net, mais un appel à un utilitaire externe travaillerais aussi.

Était-ce utile?

La solution 4

Merci à tous. Bonnes idées. Vraiment m'a aidé à réfléchir. Upvotes tout autour. Nous avons fini, je ne l'ai pas besoin d'être très sûr qu'ils étaient cordes alors je suis allé avec un rapide, bâclé, laid, 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)

Autres conseils

L'utilitaire de chaînes GNU a été toujours et fait plus ou moins exactement cela en utilisant une heuristique pour tirer sur des données qui « ressemble à une chaîne » à partir d'un binaire.

Prenez les binutils GNU (y compris les chaînes) pour Win32 de MinGW:   http://sourceforge.net/projects/mingw/files/ .

Ce n'est pas si trivial que cela puisse paraître au premier abord. Une chaîne peut être codée de plusieurs façons. Ce que vous considérez comme « lisible », comment les parties illisibles regardent? Dites-le ressemble à ceci:

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

vous êtes chanceux, car il est codé en utilisant probablement UTF-16 ou un autre encodage multi-octets. Ce sont plutôt trivial à reconnaître. Mais dans à peu près tous les autres cas (UTF-8, ISO-8859-1, Windows 1252), il est presque impossible de distinguer un caractère individuel pour être texte ou non texte, à moins que vous savez un accord équitable de la façon dont un certain « lisible » commence et comment il se termine.

Le point est: tout est permis et considéré comme un texte lisible. UTF-8, ASCII et Windows 1252 permettent même des caractères NULL (alors que certains langages de programmation ne le font pas). Voici un fil qui donne un exemple de la façon dont VB vous pouvez procéder, il pourrait vous donner quelques conseils.

PS: l'analyse de ce type de données peut être difficile, cela aidera beaucoup si vous pouvez télécharger votre fichier quelque part afin que nous puissions avoir un regard

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top