快速判断文件是文本文件或二进制文件


旧版本的pkzip使用的方法是:如果80%以上的字节都落在7..127的范围里,就认为它是文本文件,否则它就是二进制文件。

用在zlib上的新方法,可以判断 ASCII,Unicode, 以及其他一些宽字符集。
  • 白名单:9 (TAB), 10 (LF), 13 (CR), 32..255
  • 灰名单:7 (BEL), 8 (BS), 11(VT), 12 (FF), 26 (SUB), 27 (ESC)
  • 黑名单:0..6, 14..31
如果一个文件包含至少一个白名单中的字节而且不包含一个黑名单中的字节,那么它就是文本文件,否则它是二进制文件。