テキストファイルとバイナリファイルを判別する方法は?

[戻る]
しん 2005/03/07(月) 12:07:47
テキストファイルとバイナリファイルを判別するにはどうしたらいいでしょう?
考えてみたんですが、無いように思えました。
が、VSではいとも簡単かつ高速に判別して適切なエディタを開いています。
なので、出来るに違いないと思うのですが、どうしても分かりません。
どうぞ宜しくお願い致します。

ku 2005/03/07(月) 12:29:30
テキストとバイナリの差は、ファイルの中のデータ0x00〜0xffをどう解釈するかなので
完全に判断する方法は無いと思います

UNICODEならBOMで判断するとか
sjisで判断するなら1バイト目にきてはいけないコードで判断するとか
2バイト文字の1バイト目と2バイト目がありえない組み合わせで判断するとか
だと思います
どのコード体系をテキストと判断するかによっても違うかもしれないし
複数のコード体系を有効とすると、精度が下がってしまうかもしれない

基本的には、想定しているテキストコード体系に矛盾するデータがあったら
バイナリと判断するしかないのかなと思います

Blue 2005/03/07(月) 12:30:46
テキスト バイナリ 判別 でぐぐってみたとろこ

http://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/guides/html/vstskHow_VSS_Treats_Binary_Files.asp
に
ファイルの種類の識別方法

Visual SourceSafe にファイルを追加すると、そのファイルの種類がチェックされ、テ
キスト ファイルとバイナリ ファイルのいずれかの種類が自動的に割り当てられます。
ファイルの種類を判別する既定の方法は単純で、ファイル内に NULL 文字 (バイナリ値
で 0) が含まれているかどうかを調べることによって行われます。ファイル内に NULL 
文字が見つかった場合、そのファイルはバイナリ ファイルと認識されます。

とかかれていました。(VSSですけど)

しん 2005/03/07(月) 12:36:47
[[解決]]
>kuさん
>>完全に判断する方法は無いと思います
なるほど、確かに完璧な方法はないかもしれませんね。

>Blueさん
>>テキスト バイナリ 判別 でぐぐってみたとろこ
おお、これです!有難うございます。こんな単純な方法があったなんて、全く気づきませ
んでした。EOF以前に'\0'が出現するようなテキストファイルだったらダメですが、レア
ケースでしょう。この方法は十分役立ちますね!

私も全く同じ検索キーワードで、Yahoo!ってみたんですが、ダメでした。修行が足りませ
んね。お二人とも有難うございました!大感謝です!

古いスレッドには追加発言できません。