如何检测 MIME 文件中的纯文本?
Posted
技术标签:
【中文标题】如何检测 MIME 文件中的纯文本?【英文标题】:How do I detect plaintext in a MIME file? 【发布时间】:2011-04-13 15:46:58 【问题描述】:我有大量的 MIME 文件,其中包含多个部分。许多文件包含标有以下标题的部分:
Content-Type:应用程序/八位字节流
内容传输编码:二进制
但是,有时这些部分的内容是某种形式的二进制代码,有时它们是明文。
在 C++、Bash 或 Ruby 中是否有一种聪明的方法来检测标记为 application/octet 流的 MIME 部分的内容是二进制数据还是纯文本?
【问题讨论】:
【参考方案1】:grep 的 -I 选项会将二进制文件视为没有匹配项的文件。如果文件是二进制文件,结合 -q 选项 grep 将返回非零退出状态。
if grep -qI -e '' <file>
then
# plaintext
else
# binary
fi
【讨论】:
不是整个文件是二进制文件,而是文件的一部分。我们知道大部分文件都是纯文本格式的。 mime 文件由一些元数据和一些内容部分组成。内容部分具有上面列出的标头,有时是纯文本,有时是二进制文件,有时是 HTTP。【参考方案2】:最简单的方法是将文件拆分为一组多个文件,每个文件都包含一个组成部分。然后我们可以使用 grep 和其他函数来确定文本格式。
【讨论】:
以上是关于如何检测 MIME 文件中的纯文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测 Angular 9 应用程序中的 MIME 类型错误并获得通知?