and*_*rew 38 file-type binaryfiles text-files
我们为什么要在传输时区分文本文件和二进制文件?为什么有些频道只针对文字数据设计?在底层,它们都是位.
Die*_*Epp 25
在底层,它们都是位......真的.然而,一些传输信道每字节有7比特,而其他传输信道每字节有8比特.如果您通过七位通道传输ASCII文本,那么一切都很好.二进制数据被破坏.
此外,不同的系统对行结尾使用不同的约定:LF和CRLF很常见,但有些系统使用CR或NEL.文本传输模式将自动转换行结尾,这将损坏二进制文件.
然而,如今这些都是历史上最重要的.大多数传输通道都是8位(例如HTTP),并且大多数用户都可以使用它们获得的任何行结束.
7位通道的一些示例: SMTP(名义上,没有扩展名),SMS,Telnet,一些串行连接.互联网并不总是建立在TCP/IP上,它表明.
此外,HTTP规范声明,
在规范形式中,"text"类型的媒体子类型使用CRLF作为文本换行符.HTTP放宽了这一要求,并允许传输具有普通CR或LF的文本媒体,表示在整个实体主体一致地完成时的换行符.
小智 8
所有文件都以两种文件格式之一保存 - 二进制或文本.这两种文件类型在表面上看起来可能相同,但它们的内部结构不同.
虽然二进制文件和文本文件都包含存储为一系列(位(二进制值1s和Os))的数据,但文本文件中的位表示字符,而二进制文件中的位表示自定义数据.
重要的是要添加到已经提供的答案中,文本文件和二进制文件都表示字节,但文本文件与二进制文件不同,因为字节被理解为表示字符。字节到字符的映射是使用特定代码页或 Unicode 在文件上一致完成的。使用 7 或 8 位代码页时,您可以在读取这些文件时旋转转盘,并用英语字母、德语字母、俄语字母或其他字母解释它们。这种旋转拨号不会影响字节,它确实会影响选择哪些字符与字节相对应。
正如其他人所说,还存在换行分隔符的编码问题,这是文本文件所特有的,并且可能因平台而异。“换行符”不是我们字母表中的字母,也不是您可以编写的符号,因此其他规则适用于它。
对于二进制文件,字符编码或“行”的定义没有隐式约定。
区分两者很重要,因为不同的操作系统对文本文件的处理方式不同.例如,在*nix中,您可以\n在使用的MS OS中\r\n以及在您使用的Mac中结束行\n\r.FTP客户端等软件尝试通过添加/删除字符来更改文本文件的行结尾以匹配目标操作系统.这是为了确保文本文件在目标操作系统上正常显示.
例如,如果您使用换行符在*nix中创建文本文件并尝试将其作为二进制文件复制到Windows框并在记事本中打开它,您将看不到任何行结尾,而只是一个文本障碍.