Pregunta

quiero raspar datos de cadena de algunos archivos de texto binarios que contener sentencias SQL. No necesito cualquier limpieza de fantasía - sólo alguna manera de extraer el texto legible. Estoy usando vb.net, pero una llamada a una utilidad externa trabajaría también.

¿Fue útil?

Solución 4

Gracias a todos. Grandes ideas. Realmente me ayudó a pensar. Upvotes por todas partes. Terminó no necesitaba que estar muy seguro de que fueran cadenas, así que fui con una rápida, descuidado, feo, truco.

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

Otros consejos

La utilidad cadenas GNU ha estado ahí desde siempre y lo hace más o menos exactamente esto mediante el uso de una heurística dar un tirón a cualquier dato que "se parece a una cadena" de un sistema binario.

Coge las binutils de GNU (incluyendo cadenas) para Win32 desde MinGW:   http://sourceforge.net/projects/mingw/files/ .

Esto no es tan trivial como puede parecer en un principio. Una cadena puede ser codificado en muchos aspectos. Lo que se tiene en cuenta "texto legible", ¿cómo se ven las partes ilegibles? Decir que se ve así:

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

tiene suerte, porque es probable codificado con UTF-16 u otra codificación de varios bytes. Estos son más bien trivial de reconocer. Sin embargo, en casi todos los otros casos (UTF-8, ISO-8859-1, Windows-1252) que es casi imposible distinguir un carácter individual por ser texto o no de texto, a menos que sepa un reparto justo de cómo un determinado "texto legible" comienza y cómo termina.

El punto es: todo está permitido y se considera texto legible. UTF-8, ASCII y Windows-1252 permiten incluso caracteres NULL (si bien algunos lenguajes de programación no lo hacen). He aquí una hilo que da un ejemplo de VB de cómo se puede proceder, podría darle algunos consejos.

PS: analizar este tipo de datos puede ser difícil, será de gran ayuda si se puede cargar el archivo en algún lugar para que podamos tener una mirada

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top