text-files - 文本文件和二进制文件的区别

标签 text-files binaryfiles file-type

传输时为什么要区分文本文件和二进制文件?为什么有些 channel 只针对文本数据设计?在底层,它们都是位。

最佳答案

在底层,它们都是……真实的。然而,一些传输 channel 每字节有七位,而其他传输 channel 每字节有八位。如果您通过七位 channel 传输 ASCII 文本,那么一切都很好。二进制数据被破坏。

此外,不同的系统使用不同的行结尾约定:LF 和 CRLF 很常见,但有些系统使用 CR 或 NEL。文本传输方式会自动转换行尾,这会损坏二进制文件。

然而,如今这主要是具有历史意义的。大多数传输 channel 都是八位的(例如 HTTP),并且大多数用户都可以接受他们得到的任何行结尾。

7 位 channel 的一些示例: SMTP(名义上,不带扩展名)、SMS、Telnet、一些串行连接。事实证明,互联网并不总是建立在 TCP/IP 之上。

此外,HTTP 规范指出,

When in canonical form, media subtypes of the "text" type use CRLF as the text line break. HTTP relaxes this requirement and allows the transport of text media with plain CR or LF alone representing a line break when it is done consistently for an entire entity-body.

关于text-files - 文本文件和二进制文件的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6039050/

相关文章:

java - 生成的 JAR 文件未执行

ruby-on-rails-3 - Rails 3渲染二进制内容

reverse-engineering - 如何出于兼容性目的对二进制文件格式进行逆向工程

python - 从 .mat 文件转换为 .txt 文件后文件大小增加

python - 在 Python 中对文本文件进行排序

c - 逐行读取文本文件并将每一行保存在缓冲区中,而不管每行的数据类型和长度

node.js - 将本地文件夹中的图像上传到S3

c++ - 如何读取目录中最后修改的文件的文件名?

drupal - 在Drupal的.info文件中进行评论

linux - 修改文本文件而不读入内存