回车与换行的区别。CR、LF、CRLF的区别\r
\n
\r\n
大部分场景的编辑器都能抹平换行符的差异,但是问题存在终归是存在,做开发的大概率遇到过换行的问题。
现在来了解一下回车与换行。
对比结论
中文 | 英文 | 英文缩写 | ASCⅡ转义 | ASCⅡ值 | 系统 |
回车 | Carriage Return | CR | \r | 13 | MacIntosh(早期的Mac) |
换行 | Linefeed | LF | \n | 10 | Unix/Linux/Mac OS X(现在的Mac) |
回车并换行 | CRLF | \r\n | Windows |
历史详解
很长一段时间里,对于CRLF、CR、LF的理解仅限于不同操作系统下对换行符的定义。
所谓知其然需知其所以然,从学习中找到乐趣,对知识的记忆才会更加深刻。
据野史记载,在很久以前的机械打字机时代,CR和LF分别具有不同的作用:LF会将打印纸张上移一行位置,但是保持当前打字的水平位置不变;CR则会将“Carriage”(打字机上的滚动托架)滚回到打印纸张的最左侧,但是保持当前打字的垂直位置不变,即还是在同一行。
当CR和LF组合使用时,则会将打印纸张上移一行,且下一个打字位置将回到该行的最左侧,也就是我们今天所理解的换行操作。
随着时间的推移,机械打字机渐渐地退出了历史舞台,当初的纸张变成了今天的显示器,打字机的按键也演变为了如今的键盘。
在操作系统出现的年代,受限于内存和软盘空间的不足,一些操作系统的设计者决定采用单个字符来表示换行符,如Unix的LF、MacIntosh的CR。他们的意图都是为了进行换行操作,只是当初并没有一个国际标准(或者其他原因,鬼知道),所以才有这样字符上的不同。
注意
- 在linux的脚本要看换行是否是LF,否则导致不可预知的错误,也找不到原因。浪费很长时间。
- 在Window有些编辑器自动改为CRLF,有些自动改为LF,反复打开给你反复修改。不过一般的编辑器都给你提供了设置默认换行符的设置,可以自行设置一下。
修改换行符示例
Nodepad++*
Jetbrains开发工具
IDEA、WebStorm、Goland等都一样。
这里可以改单个文件的换行符。
下面这个设置能改默认换行符:
推荐阅读