5个版本
使用旧的Rust 2015
0.2.4 | 2018年11月4日 |
---|---|
0.2.3 | 2018年10月7日 |
0.2.2 | 2018年8月21日 |
0.2.1 | 2018年6月3日 |
0.2.0 | 2018年6月3日 |
#1437在编码
每月161,349次下载
用于125个crate(28直接)
12KB
150 行
content_inspector
一个用于快速检查二进制缓冲区以猜测内容类型的简单库。
这主要是用来快速确定给定的缓冲区是否包含“二进制”或“文本”数据。像 grep
或 git diff
这样的程序使用类似的机制来决定是否将某些文件视为“二进制数据”。
分析基于一个非常简单的启发式方法:搜索NULL字节(表示“二进制”内容)和检测特殊的字节顺序标记(表示特定的文本编码类型)。注意,这种分析可能会失败。例如,即使可能性很小,UTF-8编码的文本可以合法地包含NULL字节。相反,某些特定的二进制格式(如二进制PGM格式)可能不包含NULL字节。此外,出于性能考虑,仅检查前1024字节以查找NULL字节(如果未检测到BOM)。
如果此库报告了某种类型的编码(例如UTF_16LE
),则没有保证二进制缓冲区实际上可以按UTF-16LE编码解码。
使用方法
use content_inspector::{ContentType, inspect};
assert_eq!(ContentType::UTF_8, inspect(b"Hello"));
assert_eq!(ContentType::BINARY, inspect(b"\xFF\xE0\x00\x10\x4A\x46\x49\x46\x00"));
assert!(inspect(b"Hello").is_text());
CLI示例
此crate还附带一个小型示例命令行程序(请参阅examples/inspect.rs
),该程序演示了使用方法
> inspect
USAGE: inspect FILE [FILE...]
> inspect testdata/*
testdata/create_text_files.py: UTF-8
testdata/file_sources.md: UTF-8
testdata/test.jpg: binary
testdata/test.pdf: binary
testdata/test.png: binary
testdata/text_UTF-16BE-BOM.txt: UTF-16BE
testdata/text_UTF-16LE-BOM.txt: UTF-16LE
testdata/text_UTF-32BE-BOM.txt: UTF-32BE
testdata/text_UTF-32LE-BOM.txt: UTF-32LE
testdata/text_UTF-8-BOM.txt: UTF-8-BOM
testdata/text_UTF-8.txt: UTF-8
如果您只想检测某个文件是二进制文件还是文本文件,这比file --mime ...
快约250倍。
许可证
许可协议为以下之一
- Apache License,版本2.0,(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- 麻省理工学院许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
根据您的要求。
依赖项
约170–315KB