質問

私は、組み込み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文字列ユーティリティは永遠の周りされており、まさにこのバイナリから「文字列のように見える」という任意のデータをヤンクするヒューリスティックを使用して、多かれ少なかれ行います。

MinGWのからのWin32用(文字列を含む)の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でもNULL文字を許可します。 ここでは、先に進むことができる方法のVBの例を示しますスレッドのですあなたにいくつかのヒントを与えるかもしれません。

PS:このタイプのデータを分析することは難しいことができ、我々は見ることができますので、どこかにあなたのファイルをアップロードすることができれば、それは大いに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top