【问题标题】:What's the difference between \n and \r\n?\n 和 \r\n 有什么区别?
【发布时间】:2011-04-18 19:38:26
【问题描述】:

它们都是“新行”的意思,但是什么时候使用一个而不是另一个?

【问题讨论】:

标签: string special-characters line-endings


【解决方案1】:

\r\nWindows 样式

\n 是一种 POSIX 风格

\r 是旧的 pre-OS X Macs 风格,现代 Mac 使用 POSIX 风格。


\r 是回车,\n 是换行,在没有显示器的旧电脑中,只有打印机可以将程序结果输出给用户,如果你想得到从左起新行开始打印,换行必须得到\n回车到最左边的位置必须得到\r,这是从Windows 平台上保存到此时的旧计算机语法。

【讨论】:

  • CR+LF 常用于许多网络协议(如 HTTP)中,与用于传输数据的操作系统无关。当目标系统使用 ASCII 或 Unicode 作为其字符系统时,\r 通常映射到 CR。 (如果目标系统使用 EBCDIC,那么\r 可能没有映射。)\n 比较棘手,因为它取决于上下文。它通常映射到 ASCII/Unicode LINE FEED,但并不总是那么简单。 “可能重复”问题的答案有详细信息。
  • 您可以从这里查看 HTTP 规范:w3.org/Protocols/rfc2616/rfc2616-sec5.htmlCRLF(回车换行)
【解决方案2】:

\n 表示换行。这意味着光标必须转到下一行。

\r 表示回车。这意味着光标应该回到行首。

Unix 程序通常只需要一个新行 (\n)。

Windows 程序通常需要两者。

【讨论】:

  • 9 年后,你编写 Windows 和 Windows 程序,而不是 MacOS 和 Windows
  • 我很确定你错了,Windows 和 Mac 的行为不同。但由于我不是 Mac 专家,我将完全删除有关 mac 的行,并将其留给更有知识的人。
  • 在 Mac OS X 之前,Mac 仅使用 \r 作为其行终止符。由于 Mac OS X / OS X / macOS 是 Unix,旧的约定被放弃,取而代之的是单换行的标准 Unix 约定。
【解决方案3】:

\n 只是换行符,\r\n 是换行符和回车符(即将光标向左移动)。

【讨论】:

    【解决方案4】:

    '\n' 是 Unix 的默认值,'\r\n' 是 Windows 的默认值。

    【讨论】:

      【解决方案5】:

      不同的操作系统以不同的方式处理换行符。以下是最常见的简短列表: DOS和Windows

      他们希望换行符是两个字符的组合,即 '\r\n'(或 13 后跟 10)。

      Unix(因此也包括 Linux)

      Unix 使用单个 '\n' 表示换行。

      苹果机

      Mac 使用单个 '\r'。

      因此,当您使用文件夹路径等时,当您将应用程序从 Windows 移植到 Mac 时,这会导致问题。

      【讨论】:

        【解决方案6】:

        这就是新行在 Windows (\r\n) 和 linux (\n) 操作系统中的表示方式

        在 Unix 上,\r 是回车符 (CR),而 \n 一个换行符 (LF),它恰好是 Windows 换行符 标识符,您将用 Unix 换行标识符替换它们。

        在 Windows 上,\r 也是 CR,但 \n 是 CR 和 LF 的组合。所以 实际上,您正在尝试用 CR+LF 替换 CR+CR+LF。赚的不多 感觉,是吗。

        来自“perldoc perlop”: 所有系统都使用虚拟的 ""\n"" 来表示行终止符, 称为“换行符”。没有不变的、物理的 换行符。操作系统只是一种错觉, 设备驱动程序、C 库和 Perl 都合力保留。不是全部 系统将 ""\r"" 读取为 ASCII CR,将 ""\n"" 读取为 ASCII LF。例如,在 Mac,这些是相反的,并且在没有行终止符的系统上, 打印 ""\n"" 可能不会发出任何实际数据。一般情况下,使用 ""\n"" 表示您的系统的“换行符”,但当您使用文字 ASCII 需要一个确切的字符。例如,大多数网络协议期望 并且更喜欢使用 CR+LF (""\015\012"" 或 ""\cM\cJ"") 作为行终止符, 虽然他们经常只接受 ""\012"",但他们很少容忍 ""\015""。如果你养成了使用 ""\n"" 进行网络的习惯,你 可能有一天会被烧毁。

        【讨论】:

          【解决方案7】:

          区别在于不同的操作系统,在 Windows 上,换行符是 \r\n 而在 Linux 上只是 \n Mac OSX 只是 \r 这实际上只是操作系统设计者制作的问题应该是

          【讨论】:

            【解决方案8】:

            在 C# 中,您可以只使用 Environment.NewLine

            【讨论】:

            • 具有讽刺意味的是,虽然这是优于 "\n" 或 "\r\n" 的用法(至少在 DOT NET 中),但它实际上并没有回答原始问题。
            • 投反对票,因为它没有解决问题
            • 我明白了,这个答案确实回答了这个问题。
            猜你喜欢
            • 1970-01-01
            • 2013-03-04
            • 1970-01-01
            • 2010-11-19
            • 2011-04-28
            • 1970-01-01
            • 2016-04-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多