我对文件,文件编码和文件格式的概念缺乏清晰的理解。谷歌帮助达到了一定程度。 到目前为止我所理解的From,所有文件都是二进制文件,即这种文件中的每个字节都可以包含256个可能的位串中的任何一个。 ASCII文件(以及我们到达编码部分的地方)是二进制文件的子集,其中每个字节仅使用7位。
这就是事情变得混乱的地方。文件format似乎是解释文件中字节的一种方式,文件扩展名似乎是识别文件格式最常用的方法之一。
这是否意味着为ASCII文件定义的二进制文件和格式定义了格式?格式如xml,pdf,doc,rtf,html,xls,sql,tex,java,cs“引用”ASCII文件?而像jpg,mp3,avi,eps,obj,out,dll这样的格式是我们谈论二进制文件的线索吗?
答案 0 :(得分:9)
我认为您不能谈论 ASCII 和 BINARY 文件,但 TEXT 和 BINARY 文件
从这个意义上说,这些是文本文件:XML,HTML,RTF,SQL,TEXT,JAVA,CSS,EPS。
这些是二进制文件:PDF,DOC,XLS,JPG,MP3,AVI,OBJ,DLL。
ASCII只是在计算开始时用于表示文本的字符表,但现在有点不鼓励,因为它无法用中文,阿拉伯语,西班牙语等语言表示文字(带有ñ,Ñ,tildes的单词) ),法国和其他人。现在鼓励其他CHARACTER REPRESENTATIONS而不是ASCII。最着名的可能是 UTF-8 。但还有其他像 ISO-8859-1 , ISO-8859-3 等。看看Joel Spolsky关于UNICODE的this文章。这很有启发性。
文件格式只是另一个非常不同的问题。文件格式是程序同意的协议,用于表示信息。从这个意义上讲, JPG 文件是一种具有某种(众所周知的)内部格式的图像,它允许程序(浏览器,电子表格,字处理器)将它们用作图像。
文本文件也有格式(例如,有XML和HTML等文本文件的规范)。其格式(如 JPG 和其他二进制文件)允许应用程序以连贯和特定的方式使用它们来实现某些目的:I.E.,呈现WEB PAGE(HTML和XHTML文件格式)。
答案 1 :(得分:2)
文件存储在硬盘驱动器上的实际方式由OS定义。文件的实际内容可以描述为字节数组 - 每个字节都有一个字节大小可能的值。
文本文件 - 将使用256个字符(ASCII)集 - 然后您可以轻松地阅读它们或更广泛的字符集 - 在这种情况下 - 只有合适的应用程序才能读取它。
其余的 - 您可能称为二进制文件(以及“文本”查看器“不可读”的任何其他格式) - 是设计为由某些其他应用程序或操作系统读取的格式。 如果它是可执行的 - 操作系统可以读取并执行,其他人 - 如jpg - 旨在被照片浏览者“理解”等......
答案 2 :(得分:0)
这是一个老问题,但仍然非常相关。我也对此感到困惑,并要求澄清。这是摘要(希望它可以帮助某人):
格式:文件/记录格式是数据的表示方式。您可以使用CSV,TSV,JSON,Apache日志格式,Thrift格式,Protobuf格式等来表示您的数据。格式负责确保数据的正确结构和正确表示。例如:当你读取一个json文件时,你应该有嵌套的键值对;这是始终存在的保证。
{
"story": {
"title": "beauty and the beast"
}
}
编码:编码基本上将您的数据(以任何格式或纯文本格式)转换为特定方案。现在,这个计划是什么? Scheme特定于编码的目的。例如,在通过有线(互联网)传输数据时,我们希望确保上面的示例json正确到达另一侧,不应该被破坏。为了确保这一点,我们将添加一些元信息,如校验和,可用于验证数据的正确性。编码的其他用法包括缩短数据,交换秘密等。
Base64 encoding of above JSON example:
ew0KICAgICAgICAic3RvcnkiOiB7DQogICAgICAgICAgICAidGl0bGUiOiAiYmVhdXR5IGFuZCB0aGUgYmVhc3QiDQogICAgICAgIH0NCn0=
答案 3 :(得分:0)
我认为值得注意的是,对于媒体文件,mpeg和其他媒体编解码器是一种形式。他们解释了数字数据如何表达视觉和音频。它们通常位于媒体文件容器中,例如avi文件,它实际上是用于媒体的riff文件类型。