“换行符”和“回车符”有什么区别?

294

如果有两个关键字,那么它们必须有各自的含义。所以我想知道它们之间的区别是什么,以及它们的代码是什么。


2
请查看维基百科:http://en.wikipedia.org/wiki/Carriage_Return#Computers - exic
5
可能是 What are carriage return, linefeed, and form feed? 的重复问题。 - jtbandes
3
请查看这篇文章,它将一切讲得非常清楚。链接为:http://digital.ni.com/public.nsf/allkb/5A5A050A3019A573862575F30061D49B - Rohit Saluja
规范候选(2009年):*CR LF、LF 和 CR 行结束符之间有什么区别?* - Peter Mortensen
4个回答

460

换行符表示向前移动一行,代码为\n
回车符表示将光标移到行的开头,代码为\r

Windows编辑器通常在文本文件中仍使用两者的组合作为\r\n。Unix主要仅使用\n

这种区分来自打字机时代,当您转动纸轮以换行并移动打字机以重新开始在新行的开头打字。这是两个步骤。


29
即使是老式打字机,你会认为它们也应该想到将 \n 表示为两个步骤。 - ColacX
34
在想要覆盖当前行文本的情况下,执行仅回车而不换行通常是很有用的。这适用于打字机和终端。 - Dan Bechard
3
在Windows中,正确的行结尾序列应该是\n\r吗? - Delfino
37
并不完全是这样。在机械打印机上,更早地启动回车会更合理,因为打印速度较慢,需要在打印头返回前提前送纸。 - Maciej Stachowski
7
请注意,早期的 Mac 仅使用 \r。 - Envite
显示剩余13条评论

55

以非专业的语言来说,Enter键的按下是回车和换行符的组合。

回车会将光标水平地移动到行首,而换行符则将光标垂直地移动到下一行。两者的结合使您获得新行(\n)的效果。

参考: https://en.wikipedia.org/wiki/Carriage_return#Computers


当计算机取代打字机进行文本处理时,它成为了换行和分段之间的区别。 - Gustavo
这似乎只涉及Windows系统。对于类Unix系统来说,它有点正确,但文本文件仅包含换行符\n,在屏幕上显示时会呈现为换行符+回车符。 - wjandrea

11

这两个概念都源于早期印刷时代。

回车符来自于电传打字机/旧式打字机时代,当时打字机的滑轨会返回到下一行,并将纸张推起。现在我们称之为\r

换行符LF表示一行已经结束了,但它并不会移动光标到下一行。换句话说,它不会“回到”下一行的光标/打印头。

如需更多琐碎的细节,请参阅强大的维基百科


16
我相信回车指的是将光标移动到同一行的开头,而不是移到下一行。 打字机类比既包括垂直地向下移动到下一行(换行),也包括水平地返回到行的开头(回车)。http://en.wikipedia.org/wiki/Carriage_return - Feckmore

1

“换行”(0x0A或10)和“回车”(0x0D或13)都是单字节值。这些值是LF / CR的接受标准。大多数语言将其视为“字符”。您可以在任何标准ASCII表上找到这些值,如ASCII控制字符表

例如,在C#中,以下字符串:

String str = "\n\r";

字符串的长度是两个字符(忽略字符串类型中所需的隐藏结束空字符“0x00”)。但是,您可以创建一个等效的字符类型数组,例如:

char[] c = new char[](){0x0A,0x0D}; // LF, CR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接