Domanda

Voglio raschiare i dati di stringa da alcuni file di testo che contengono binari incorporati istruzioni SQL. Non ho bisogno di alcuna voglia di pulizia - solo un modo per estrarre il testo leggibile. Sto utilizzando vb.net, ma una chiamata a un programma di utilità esterno avrebbe funzionato troppo.

È stato utile?

Soluzione 4

Grazie a tutti. Le grandi idee. Davvero mi ha aiutato a pensare. Upvotes tutto intorno. Finito non ho bisogno di essere molto sicuri che fossero stringhe così sono andato con un rapido, sciatta, brutta, mod.

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

Altri suggerimenti

L'utility GNU stringhe è stato in giro per sempre e fa più o meno esattamente questo utilizzando un euristico per tirare tutti i dati che "si presenta come una stringa" da un binario.

Prendete le binutils GNU (incluse le stringhe) per Win32 da MinGW:   http://sourceforge.net/projects/mingw/files/ .

Questa non è così banale come può sembrare in un primo momento. Una stringa può essere codificato in molti modi. Ciò che si considera "testo leggibile", come fanno le parti illeggibili guardare? Ditelo assomiglia a questo:

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

si è fortunati, perché è probabile codificati con UTF-16 o un'altra codifica multibyte. Questi sono piuttosto banali da riconoscere. Ma in quasi tutti gli altri casi (UTF-8, ISO-8859-1, windows-1252) è quasi impossibile distinguere un carattere individuale per essere testo o non di testo, se non si conosce un trattamento equo di come una certa "leggibili testo" inizia e come finisce.

Il punto è: qualsiasi cosa è consentito e considerata testo leggibile. UTF-8, ASCII e Windows-1252 consentono anche caratteri NULL (mentre alcuni linguaggi di programmazione non lo fanno). Ecco un filo che fornisce un esempio di come VB si può procedere, essa potrebbe dare alcuni suggerimenti.

PS: analisi di questo tipo di dati può essere difficile, sarà di grande aiuto se si potesse caricare il file da qualche parte in modo che possiamo avere uno sguardo

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top