#binary-data #binary #binary-format #data-analysis #unicode #text-encoding

content_inspector

快速检查二进制缓冲区以猜测/确定编码

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编码

Download history 65223/week @ 2024-03-14 49684/week @ 2024-03-21 38598/week @ 2024-03-28 40974/week @ 2024-04-04 36239/week @ 2024-04-11 39526/week @ 2024-04-18 37113/week @ 2024-04-25 39204/week @ 2024-05-02 37314/week @ 2024-05-09 39497/week @ 2024-05-16 41522/week @ 2024-05-23 44957/week @ 2024-05-30 40638/week @ 2024-06-06 41769/week @ 2024-06-13 38639/week @ 2024-06-20 33781/week @ 2024-06-27

每月161,349次下载
用于125个crate(28直接)

MIT/Apache

12KB
150

content_inspector

Crates.io Documentation

一个用于快速检查二进制缓冲区以猜测内容类型的简单库。

这主要是用来快速确定给定的缓冲区是否包含“二进制”或“文本”数据。像 grepgit 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倍。

许可证

许可协议为以下之一

根据您的要求。

依赖项

约170–315KB