我想知道两者之间的区别(如果可能的话,请举例说明) CR LF (Windows)、LF (Unix)和CR (Macintosh)三种换行类型。


当前回答

这是我发现的一个很好的总结:

回车符(CR)字符(0x0D, \r)将光标移动到行首,而不移动到下一行。此字符在Commodore和早期Macintosh操作系统(OS-9及更早版本)中用作新行字符。

换行(LF)字符(0x0A, \n)将光标向下移动到下一行,而不返回到行首。此字符在基于UNIX的系统(Linux、Mac OSX等)中用作新行字符。

行结束(EOL)序列(0x0D 0x0A, \r\n)实际上是两个ASCII字符,是CR和LF字符的组合。它将光标向下移动到下一行和该行的开头。该字符在大多数其他非unix操作系统(包括Microsoft Windows、Symbian OS和其他操作系统)中用作新行字符。

其他回答

这是我发现的一个很好的总结:

回车符(CR)字符(0x0D, \r)将光标移动到行首,而不移动到下一行。此字符在Commodore和早期Macintosh操作系统(OS-9及更早版本)中用作新行字符。

换行(LF)字符(0x0A, \n)将光标向下移动到下一行,而不返回到行首。此字符在基于UNIX的系统(Linux、Mac OSX等)中用作新行字符。

行结束(EOL)序列(0x0D 0x0A, \r\n)实际上是两个ASCII字符,是CR和LF字符的组合。它将光标向下移动到下一行和该行的开头。该字符在大多数其他非unix操作系统(包括Microsoft Windows、Symbian OS和其他操作系统)中用作新行字符。

CR和LF是一组特殊的字符,帮助我们格式化代码。

CR(/r)代表回车。它将光标放在一行的开头,但不创建新行。这就是MAC OS的工作原理。 LF(/n)表示换行。它创建了一个新行,但没有把光标放在该行的开头。光标停留在最后一行的末尾。这就是Unix和Linux的工作原理。 CRLF (/r/f)创建新行,并将光标放在新行开头。这就是我们在Windows操作系统中看到的情况。

Git默认使用LF。所以当我们在Windows上使用Git时,它会抛出一个警告,比如“CRLF将被LF取代”,并自动将所有CRLF转换为LF,这样代码就变得兼容了。 注意:别担心…不要把这看作是一个警告,而要把它看作是一个提醒。

CR - ASCII码13

LF - ASCII码10。

理论上CR将光标返回到第一个位置(左侧)。LF输入一行移动光标一行。在过去,你就是这样控制打印机和文本模式显示器的。 这些字符通常用于标记文本文件中的行结束。 不同的操作系统使用不同的约定。正如你指出的,Windows使用CR/LF组合,而在osx之前的mac只使用CR等等。

基于ASCII或a的系统 兼容字符集使用任意LF (换行,0x0A, 10 十进制)或CR(回车,0x0D,十进制13) 单独,或CR后面跟着 LF (CR+LF, 0x0D 0x0A); 这些字符基于打印机命令:换行 表示了一行 纸张应从打印机中送出,并有一个马车返回 显示打印机 回车应返回到当前行的开头。

这是细节。

CR和LF为控制字符,分别编码为0x0D(十进制13)和0x0A(十进制10)。

它们用于标记文本文件中的换行符。正如您所指出的,Windows使用两个字符CR LF序列;Unix只使用LF,旧的MacOS(前osx MacIntosh)使用CR。

杜撰的历史观点:

As indicated by Peter, CR = Carriage Return and LF = Line Feed, two expressions have their roots in the old typewriters / TTY. LF moved the paper up (but kept the horizontal position identical) and CR brought back the "carriage" so that the next character typed would be at the leftmost position on the paper (but on the same line). CR+LF was doing both, i.e. preparing to type a new line. As time went by the physical semantics of the codes were not applicable, and as memory and floppy disk space were at a premium, some OS designers decided to only use one of the characters, they just didn't communicate very well with one another ;-)

大多数现代文本编辑器和面向文本的应用程序提供选项/设置等,允许自动检测文件的行尾约定并相应地显示它。