加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 如何区分’二进制’和’文本’文件?

发布时间:2020-12-15 16:17:52 所属栏目:安全 来源:网络整理
导读:非正式地,我们大多数人理解,有’二进制’文件(目标文件,图像,电影,可执行文件,专有文档格式等)和’文本’文件(源代码,XML文件,HTML文件,电子邮件等)。 一般来说,你需要知道一个文件的内容,以便能够做任何有用的事情,并形成这个观点,如果编码是
非正式地,我们大多数人理解,有’二进制’文件(目标文件,图像,电影,可执行文件,专有文档格式等)和’文本’文件(源代码,XML文件,HTML文件,电子邮件等)。

一般来说,你需要知道一个文件的内容,以便能够做任何有用的事情,并形成这个观点,如果编码是’二进制’或’文本’,这并不重要。当然,文件只是存储字节数据,所以它们都是“二进制”和“文本”并不意味着什么,而不知道编码。但是,仍然有用的谈论’二进制’和’文本’文件,但为了避免违反任何人的这个不精确的定义,我会继续使用’scare’引号。

但是,有各种工具可以处理各种各样的文件,在实际情况下,您想根据文件是“文本”还是“二进制”来做不同的操作。一个例子是在控制台上输出数据的任何工具。纯文本’看起来很好,是有用的。 ‘二进制’数据混乱了你的终端,一般没有用看看。 GNU grep至少在确定是否应该输出与控制台匹配时使用此区别。

所以,问题是,你怎么知道一个文件是“文本”还是“二进制”?而进一步限制,你如何告诉一个像Linux的文件系统?我不知道任何文件系统元数据指示一个文件的’类型’,所以问题进一步变成,通过检查文件的内容,我如何判断它是’文本’还是’二进制’?为了简单起见,我们将“文本”限制为可在用户控制台上打印的字符。特别是你将如何实现这一点? (我认为这是隐含在这个网站,但我想这是有帮助的,一般来说,指向现有的代码,这样做,我应该指定),我不是真的可以使用现有的程序,这个。

我们的软件读取一些二进制文件格式以及文本文件。

我们首先看一下我们认识的magic number的前几个字节。如果我们不识别任何我们读取的二进制类型的幻数,那么我们查看文件的第一个2K字节,看看它是否似乎是一个UTF-8,UTF-16或在当前code page编码的文本文件的主机操作系统。如果它不通过这些测试,我们假定它不是一个我们可以处理的文件,并抛出一个适当的异常。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读