不同操作系统中的换行符

版权声明:原创不易,未经作者允许请勿随意转载!因个人能力和精力有限,难免有疏漏和不足之处,欢迎指正,谢谢~ https://blog.csdn.net/lijing742180/article/details/85018164

一、不同操作系统下换行符的显示

换行符在 Windows 和 Linux 等系统中的显示符号是不一样的。

操作系统 换行符
Windows \r\n,回车加换行
类 Unix \n,换行
Mac \r,回车
  • \r 表示回车,即 CR (carriage return)
  • \n 表示换行,即 LF (linefeed)

二、关于不同换行符的来历

1、回车和换行

计算机还没有出现之前,使用的是电传打字机来打字(就是上一篇文章中提到的 Teletypewriter)。

电传打字机每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候要用掉0.2秒,正好可以打两个字符。
如果在这0.2秒里面,又有新的字符传过来,那么这个字符将会丢失。

于是科学家想了个办法解决这个问题,就是在每行后面加两个表示结束的字符,回车和换行:

回车,符号 \r;是告诉打字机把打印头定位在左边界;

换行,符号 \n;是告诉打字机把纸张向下方移动一行;

这就是 回车和 换行 的来历。

2、不同系统下的实现方式

后来,计算机发明了,回车和换行的概念就被用到了计算机上。当时存储器很贵,一些科学家认为在每行结尾加两个字符太浪费空间了,于是,就出现了分歧。

类 Unix 系统里,每行结尾只有“<换行>”,即“\n”;

Windows系统里面,每行结尾是“<回车><换行>”,即“ \r\n”;

Mac系统里,每行结尾是“<回车>”,即“\r”。

在类 Unix 系统中,遇到换行符 \n,就会自动加上\r实现 回车+换行 的操作;

在 Mac 系统中,遇到回车符 \r,就会自动加上\n实现 回车+换行 的操作;

所以,在打开其它系统的文件时,有可能不会正常显示换行。

3、可能会出现的问题

因为换行符的问题,在一个系统下编辑的文件放到另一个系统下时,可能会显示不正常。

常见的会有以下两种情况:

  • 在类 Unix 系统或 Mac 系统中编辑的文件,在 Windows 记事本中多行文字会变成一行(但是有些智能编辑器会自动识别不同系统的换行符,并进行转换,如 UE、Notepad++)。
  • 在 Windows 记事本中编辑的文件,在其它系统中会多显示一个控制字符 ^M(在 Linux 中,回车符 \r会作为控制字符 ^M显示)。

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/85018164