ファイルがテキストかバイナリを判定するには?


かまいたち  2007-02-03 23:41:55  No: 135135

VB.NET2.0で、ファイルがテキストかバイナリかを判断したいのですが、
何か方法あるのでしょうか?


魔界の仮面弁士  2007-02-04 00:55:04  No: 135136

その "VB.NET 2.0" とは、VB for .NET Framework 2.0 のような意味でしょうか。
だとしたら、VB2005 あるいは VB8 などと表記した方が一般的かと。

> ファイルがテキストかバイナリかを判断したいのですが

何故、そのような判断が必要になったのか、その理由を教えてもらえませんか?
その目的如何によって、回答の方向性も変ってくるかと思いますので。

そもそもテキストは、バイナリの一種であるとも言えますので、このような
場合には、まずは「何をテキストと看做すのか」を正確に定義してからで
ないと、プログラムの書きようが無いかと思います。

特に問題になるのが、今回の目的において、サポート対象とする文字コードです。

単にテキストファイルと言っても、たとえば、日本語専用のテキストエディタに
Big5 や GB2312 などの中国語なテキストデータを渡した場合には、正しく
表示できませんよね。このような場合に、それらのファイルをテキストと
看做すのか、バイナリと看做すべきかが、今回の質問内容では曖昧です。

日本語テキストだとしても同様で、ソフトウェアの実装内容によっては、
「Shift_JIS は良いけど、EUC-JP は駄目」という事も多いでしょう。
あるいは、Unicode をサポートした他言語対応ソフトであったとしても、
「Unicode テキストでも、UTF-8, UTF-16 形式のみOK、UTF-7, UTF-16BE は駄目」
なんていう場合もありますし。

その上、同じバイナリを持ったファイルであっても、解釈の違いによって、
どの文字コードかの判定ができない場合があります。たとえば、
E0 E8 な 2バイトのファイルは、EUC-JP のテキストとして解釈した場合は
『琥』という文字を表し、Shift_JIS として解釈すれば『琲』となります。

さらに言えば、Acrobat文書(PDFファイル)のように、そのファイル内容が
「バイナリが含まれる場合もあれば、ASCII データのみで構成されることもある」
といった揺れを見せる場合もあります。


スクリプトプログラマ  2007-02-06 23:20:59  No: 135137

Win32APIのFindMimeFromData()とか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加