协慌网

登录 贡献 社区

\ n 和 \ r 之间的区别?

\n (换行符)和\r (回车符)有什么区别?

特别是\n\r之间是否有实际区别?在某些地方应该使用一个而不是另一个吗?

答案

就 ASCII 码而言,它是 3 - 因为它们分别是 10 和 13 ;-)。

但认真的说,有很多:

  • 在 Unix 和所有类似 Unix 的系统中, \n是行尾代码, \r表示没什么特别的
  • 因此,在 C 语言和大多数以某种方式(甚至是远程)复制它的语言中, \n是行尾的标准转义序列(根据需要转换为 OS 特定的序列 / 从 OS 特定的序列转换为该序列)
  • 在旧的 Mac 系统(OS X 之前的版本)中, \r代替了行尾代码
  • 在 Windows(和许多旧的操作系统)中,行尾的代码是 2 个字符\r\n ,按此顺序
  • (令人惊讶;-)的后果(回到比 Windows 更早的操作系统), \r\n是 Internet 上文本格式的标准行终止符
  • 对于类似机电电传打字机的 “终端”, \r命令滑架向左返回,直到碰到最左边的挡块(缓慢的操作), \n命令滚轮向上滚动一条线(操作更快)–原因是您总是\n \r ,以便滚轮可以在滑架仍向左移动时移动!-)Wikipedia 有更详细的说明
  • 为字符模式端子(典型的模拟偶数旧的印刷那些如上述),在原始模式下, \r\n在光标方面类似(动作除了两者,因为没有托架或滚柱;-)

实际上,在现代的写入文本文件的上下文中,应始终使用\n (如果您使用的是奇怪的操作系统(例如 Windows;-,则底层的运行时将翻译该内容)。 \r的唯一原因是,如果您正在写一个字符终端(或者更可能是一个模拟它的 “控制台窗口”),并且希望您写的下一行覆盖您刚写的最后一行(有时用于愚蠢的 “ascii 动画”(例如进度条)的效果)–不过,在 GUI 的世界中这已经变得过时了;-)。

从历史上看, \n用于将笔架向下移动,而\r用于将笔架移回到页面的左侧。

两个不同的字符。

\n用作 Unix 文本文件中的行结束符

\r历史上(OS X 之前)用作 Mac 文本文件中的行尾终止符

\r\n (即两者)用于终止 Windows 和 DOS 文本文件中的行。