概念
\r(回车):\r就是return,回到本行行首。跟在后面的字符,会把\r前面的字符替换调,也就是,会把这一行之前的输出用后面的字符来覆盖掉
\n(换行):\n就是回车+换行,把光标先移到行首,然后换到下一行,也就是下一行的行首
背景
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
先定位字符在哪里输入(\r),然后再换行(\n)
例子
//php的测试代码
echo "11\r22\n33\r\n44 aa\nbb\rcc\r\ndd";
windows下的结果
linux下的结果
结论:
- windows下的
\r
、\n
和\r\n
效果一样,都是换行 - linux下的
\r
,则会回到当前行的行首,后面跟着的字符从当前行首开始输入
操作系统相关
CR(回车)用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D;
LF(换行)使用'\n'符号表示, ASCII代码是10, 十六制为0x0A
所以,CRLF指的就是回车+换行
在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.
Dos和windows采用回车+换行CR/LF表示下一行,
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.
进一步结论:
在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.
Dos和windows采用回车+换行CR/LF表示下一行,
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行。
所以,通过CRLF
来统一表示在上述平台下的换行。
网友评论