RFC 2045将编码数据的最大行长度定义为76 - 但是我找不到任何解释为什么它是76.这个数字是完全随意的,还是有一些推理呢?
答案 0 :(得分:9)
RFC2822是电子邮件的传统标准。 在RFC2822的2.1.1节中,您可以找到如下原因: 它也会影响MIME。
此标准对数量有两个限制 一行中的字符。每行字符必须不超过 998个字符,不应超过78个字符,不包括 CRLF。
998字符限制是由于许多实现中的限制 发送,接收或存储Internet消息格式消息 根本无法处理一行超过998个字符。接收 实现可以很好地处理任意大的数字 为了鲁棒性,一行中的字符。但是,有这样的 许多实施(符合运输 [RFC2821]的要求不接受包含更多内容的消息 超过1000个字符,包括每行的CR和LF,这很重要 对于不创建此类消息的实现。
更为保守的78字符建议是适应 显示这些的用户界面的许多实现 可能截断或灾难性地包装显示的消息 尽管如此,每行超过78个字符 实现不符合此意图 规范(和[RFC2821]的规范,如果它们确实导致 信息丢失)。同样,即使有这种限制 消息,它是显示消息的实现的障碍 在一行中处理任意大量的字符 (当然至少达到998字符限制)为了这个目的 的鲁棒性。
答案 1 :(得分:3)
实际上,最初的RFC 822定义了72个字符的限制,罪魁祸首是a teletype,这是早期计算机的标准输出设备。
您还可以“感谢”电子邮件(和Windows)中线路终结器的电传打字机设备为2个字符,即CR(回车)和LF(换行)。
必须在每行的末尾传输此序列,以便电传打字机将插入符号移动到位置0并使纸张向上移动。
当RFC 2822废弃原版时,没有人使用电传类型来呈现电子邮件,因此为了适应默认的TTY监视器设备,它稍微放松了。
答案 2 :(得分:1)
与用户界面有关的事项
http://en.wikipedia.org/wiki/Text_mode#PC_common_text_modes
基本上,80个字符(通常是25或30行)是最常见的显示标准。 78提供了一个理智的标准,因为这允许使用一些小装饰(边框)。
答案 3 :(得分:0)
最长的80行长度(包括终止的回车和换行)来自于良好的旧打孔卡,其中包含多达80列孔。
为什么是80?因为在任何一本书中,一行很少超过80个字符(包括空格)。
这意味着最大行长为80,其中包括终止的回车(将电传打字机或打字机的支架移动到最左侧的位置)和换行(将纸张前进一行)。
由于Base64是4个字符的倍数,因此我们最终最多可以有76个字符,不包括CR + LF。
另一个示例是TLE(两线元素集),它描述了卫星的轨道。它只适合两张打孔卡。
由于CR(水平移动到最左边,保持垂直位置)和LF(垂直移动到下一行,保持水平位置不变)是两个完全独立的事物,所以我们仍然同时拥有它们。下一行应该从最左边的位置开始吗?
为了以粗体打印,一行被打印了两次,中间只有一个CR,即不前进纸。因此,标准序列首先是CR,然后是LF。
但是,老式的机械打字机通常先做LF,然后做CR。