image

image

image

image

  • "LF" 的英文全称是"Line Feed",意思是“行进",用于表示 开始下一个行;
  • CR的英文全称是Carriage Return,回车,表示移动到当前行的开始位置;

以前都是打字机,你可以理解为打字机的那个打头的位置,Line Feed,就是打字头向下拨动一行,Carriage Retrurn,就是将打头拨到当前行的开始位置,后来有了电脑,打头你可以理解为鼠标的光标了;

好了,接下来说作者的想法,为什么 会用\r \n,来表示转义字符;

  1. Line Feed ----> 作者取个\n 这个n来源于line,表示 行的意思,而不是后人误解的newLine,作者是想让读者看到n,就联想到是 行 是换一行的意思;n来源于line 这个英文,有些人为了方便记忆,把\n 理解为“newline”的缩写,我认为newLine不但不好记,还又新增了一个词汇,增加复杂度;与new没有毛线关系;作者 更想表达是line,让你看到n就想到line,想到换行;

  2. Carriage Return ---> 这个回车,如何来表示回车呢,大家都知道 return是最容易想到的一个词,故用r,即\r,看到r就联想到 return,就想到回车;

不同操作系统的差异

  1. windows和dos下的换行用了2个字符,且有顺序,是\r + \n,对应Delphi里的是#13 #10,或直接用sLineBreak可以跨平台屏蔽差异;记住windows下是先回车再换行,即:r + n; 所以每行结尾是“<回车><换行>”,即“\r\n”;
  2. UNIX/Linux采用换行符(LF)表示下一行; 每行结尾只有“<换行>”,即“\n”
  3. MAC OS系统则采用回车符(CR)表示下一行; 每行结尾是“<回车>”,即“\r”。

Windows下编写的Shell脚本,直接放到linux/unix下执行会报错,就是因为行结束符不一样导致的;

Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾会多车一个^M字符。 Dos和windows采用回车+换行CR/LF表示下一行,即^M$($不是换行符的表示,换行符没有表示出来,$是文本结束EOF的表示)

现在好多文本工具都提供了转换功能,如notepad2:

image

image

posted on 2020-05-13 14:34  del88  阅读(2581)  评论(0编辑  收藏  举报