如何检测 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 文件中的纯文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免春季安全中的纯文本LDAP密码?

如何检测 Angular 9 应用程序中的 MIME 类型错误并获得通知?

如何将用逗号分隔的纯文本更改为节点中的数组? [复制]

如何将socket_read值获取为从PHP websocket中的javascript发送的纯文本

如何在UWP中数据绑定到RichEditBox的纯文本值?

如何在谷歌应用脚​​本中将段落 html 字符串转换为没有 html 标签的纯文本?