为什么Windows使用CR LF?

问题描述 投票:69回答:6

我明白两者之间的区别,所以没有必要去到这一点,但我只是想知道的理由背后是为什么Windows使用CR和LF来表示一个换行符什么。这似乎是Linux的方法(只用LF),使很多更有意义,节省了空间,而且更易于解析。

windows carriage-return line-endings linefeed
6个回答
80
投票

当使用历史 点阵打印机 电传打字机CR将滑架返回到行的第一个位置,同时将LF馈送到下一行。在文件中使用CR + LF自己做,可以直接将文件发送到打印机,没有任何形式的打印机驱动程序。

感谢@zaph指出这是电传打字机,而不是点阵打印机


21
投票

@sshannin发布从Raymond Chen的博客的网址,但它不工作了。该博客已经改变了其内部的软件,所以网址改变。

通过老帖子在新的博客爬行后,我发现它here

从博客引用:

为什么行结束符CR + LF?

该协议可以追溯到电传打字机的日子。 CR代表“回车” - 的CR控制字符返回的打印头(“托架”),以列0无推进的纸张。 LF代表“换行” - 的LF控制字符先进纸一行而不移动打印头。所以,如果你想打印头回零柱(准备打印下一行),前进纸(所以它打印在纸上新鲜),你需要CR和LF。

如果你去各个互联网协议文件,如RFC 0821(SMTP),RFC 1939(POP),RFC 2060(IMAP),或RFC 2616(HTTP),你会发现它们都指定CR + LF作为行终止序列。所以,真正的问题不是“为什么做CP / M,MS-DOS和Win32使用CR + LF作为行终止?”,而是“没有其他人为什么会选择从这些标准文件有所不同,并使用一些其他行结束?”

UNIX采用纯LF作为行终止序列。如果你看一下stty的选项,你会看到ONLCR选项指定LF是否应该改变成CR + LF。如果你得到这个错误的设置,你阶梯文本,其中

线

开始

其中,前行不放过。因此,即使UNIX,在原始模式离开时,需要CR + LF终止线。 LF之前隐含的CR是UNIX发明,可能是因为经济的,因为它节省了每行一个字节。

C语言的UNIX祖先进行这种约定成C语言标准,该标准仅需要“\ n”个(其编码LF)终止线,把上运行时库的负担,原始文件的数据转换为逻辑线路。

C语言还引入了术语“换行”来表达“一般的行终止”的概念。我听说的ASCII委员会改变性格的0x0A的名称为“换行” 1996年左右,这样的混乱水平已经提高,甚至更高。

Here’s another discussion of the subject, from a unix perspective

我已经改变了这第二个链接到自由之路机快照,因为实际的页面不存在了。

我希望这回答了你的问题。


17
投票

它来自于从昔日的天电传打字机(和打字机)。

它曾经是,当你输入完成后,一条线,你必须移动打字机的马车(其持有的纸然后滑到左边,你键入)回线(CR)的开始。然后,您不得不提前将纸张向下行(LF)移动到下一行。

还有你可能没有希望返回车厢时,例如,如果你要划去一个字符用破折号(你只是覆盖它)来换行的情况。

但基本上,它归结为约定。 DOS使用完整的CR / LF惯例,和UNIX缩短了一点。现在,我们就完蛋了!


2
投票

其他人已经给出了答案,但我想补充...我猜你是太年轻了,已经用打字机? )滑架是一个鼓。移动它水平右,带来了固定式后脑勺页面的左边距。旋转用手指和拇指运输过程中的一个线(S)推进页面。


1
投票

Wikipedia

序列CR + LF是在对通过了电传打字机,通常是ASR33,作为控制台设备许多早期的计算机系统共同使用,因为该序列被要求在一新行的开始这些打印机的定位。


1
投票

我看到了不止一个帐户,之所以送两个字符(有时更多)的影响,而不是一个是为了更好地满足数据传输速率的物理打印速度(这是很久以前的事)。移动打印头花的时间比打印单个字符发送多余的字符为防止走在前面的印刷设备的数据传输的方式。所以,我们之所以有多个字符结束线在Windows中是基本相同的,因为我们有QWERTY键盘的原因 - 它的目的是要慢下来。

显然,到今天这种做法继续在Windows的原因是基于目前的向后兼容性的一些概念,最终,只是简单的惯性。

然而值得注意的是,本公约不严格的Windows在操作系统级执行。任何Windows应用程序是免费无视惯例,取决于它正试图与之兼容其他什么应用程序。

有趣的是,Wikipedia article about "Newline",声称视窗8可以引入一个变化到仅使用LF。文章还指出,Mac OS X的介绍,从LF + CR只是LF的过渡。

© www.soinside.com 2019 - 2024. All rights reserved.