【问题标题】:What is the difference between "\r" and "\n"? [duplicate]“\r”和“\n”有什么区别? [复制]
【发布时间】:2009-08-30 22:31:39
【问题描述】:

可能重复:
What is the difference between \r and \n?

我了解每个操作系统都不同,例如,Windows 中可能需要“\r\n”,Unix 中可能需要“\n”,Mac 中可能需要“\r”。

这两个(或三个,如果你想包含“\r\n”)转义序列有什么区别?为什么它在所有系统中不一致?

我很好奇这个。

【问题讨论】:

  • 您可以在oualline.com/practical.programmer/eol.html了解更多关于电传打字机如何让我们陷入困境的信息
  • 运行 OS X 的 Mac 也是 "\n" 系统,因为它们的底层是 Unix。如果您遇到 OS 9 或更旧的机器,我会感到非常惊讶。
  • @stonemetal,我见过一些 OS 9 盒子。不会从 Windows 98 升级的通常是同一类人群,因为他们的宝贵软件(他们投入大量资金)无法在更新的任何东西上运行。
  • 这不是完全重复的。这个问题是询问不同平台使用不同换行语义的原因。链接的问题是关于\r 和\n 的含义。这是一个显着的不同(正如两个问题的公认答案所反映的那样)。

标签: newline carriage-return linefeed


【解决方案1】:

'\r' 和 '\n' 的差是 3。

【讨论】:

  • +1 因为这让我笑了。
  • 你指的是ASCII码还是随机的? :D
  • 不得不为此 +1 来取笑并让您超过 20k。 :)
  • @Mysticial:是的!如果我记得的话,我会在你接近 30k 时回报你,哈哈
  • @AdrianMcCarthy:也取决于你的幽默感。
【解决方案2】:

因为事实并非如此。

\r 表示“回车”。 \n 表示“新行”换行

一些系统足够明智地建议他们将光标移至新行所需的只是\n。其他人认为使用\r\n 更合适,因为他们可能声称列位置也需要重置(即\r)。

有时在计算中“就是这样”。这是其中一种情况:)

【讨论】:

  • “仅仅因为”永远不会出错。现在很有意义。
  • 这 2 个字符是出于历史硬件原因...旧打印机需要让 2 个字符移动到下一行... \r 将马车移回,\n 推进纸张到下一行
  • 其他评论+1
  • 实际上,\n 确实意味着换行。大多数实现对\n 使用换行这一事实是一个实现细节。
【解决方案3】:

接受的答案并不完全准确。事实上, \n 表示“换行”,而不是“换行”。区别很重要,因为这两个符号都可以追溯到电传打字机的时代,作为计算机而不是 CRT 或 LCD 的主要输出。对于电传打字机,将打印头移回第 1 列的动作和将纸张向上送入 1 行的动作是两个不同的动作。至于文件中行尾字符的不同约定的起源,其他答案正确地指出这只是历史上的好奇。

【讨论】:

  • 虽然这在技术上是正确的,但操作系统之间的不同顺序只是其创建者的偏好问题(如 cmets 和答案中所述)。 +1 的实际解释,不过,我很感激。
  • 这不是一种偏好……它是由当时的原始硬件(即打印机)决定的
  • @JoelFan:操作系统之间的区别是不过是偏好问题。
  • 其实\n并不一定代表换行。这取决于上下文。在 C 和 C++ 中,它用于在文本模式下进行 I/O 时指示换行。大多数实现使用换行来表示它,但这是一个实现细节。一个符合要求的实现可以改用U+0085 NEXT LINE 之类的东西。
  • 如果没有特定的冲突上下文,\n 是 U+000A,即换行。 U+0085 没有单字节 UTF-8 表示,这使得它在源代码中的使用令人怀疑。
【解决方案4】:

由于每个操作系统制造商做出的历史决策,它并不一致。 至于区别,请参见此处的字符 12 和 15:http://www.asciitable.com/

【讨论】:

    【解决方案5】:

    【讨论】:

    【解决方案6】:

    有些系统甚至没有行尾的概念。 VAX/VMS 和 IBM VM 操作系统都支持不需要行尾标记的基于记录的文件。

    【讨论】:

    • +1,这是我永远无法在对话中提出但值得了解的有趣事实之一。
    • 如果有一本名为“尼尔·巴特沃斯的事实之书”的书,我会深深考虑购买它
    • 在我从事的一项工作中,我们发明了“无聊但真实”的概念。这可以有效地应用于任何数量的计算概念和技术。
    猜你喜欢
    • 2013-03-04
    • 2011-04-18
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2017-09-22
    • 2013-04-08
    • 2011-04-28
    • 2017-08-10
    相关资源
    最近更新 更多