【发布时间】:2011-04-18 19:38:26
【问题描述】:
它们都是“新行”的意思,但是什么时候使用一个而不是另一个?
【问题讨论】:
标签: string special-characters line-endings
它们都是“新行”的意思,但是什么时候使用一个而不是另一个?
【问题讨论】:
标签: string special-characters line-endings
\r\n 是 Windows 样式
\n 是一种 POSIX 风格
\r 是旧的 pre-OS X Macs 风格,现代 Mac 使用 POSIX 风格。
\r 是回车,\n 是换行,在没有显示器的旧电脑中,只有打印机可以将程序结果输出给用户,如果你想得到从左起新行开始打印,换行必须得到\n,回车到最左边的位置必须得到\r,这是从Windows 平台上保存到此时的旧计算机语法。
【讨论】:
\r 通常映射到 CR。 (如果目标系统使用 EBCDIC,那么\r 可能没有映射。)\n 比较棘手,因为它取决于上下文。它通常映射到 ASCII/Unicode LINE FEED,但并不总是那么简单。 “可能重复”问题的答案有详细信息。
\n 表示换行。这意味着光标必须转到下一行。
\r 表示回车。这意味着光标应该回到行首。
Unix 程序通常只需要一个新行 (\n)。
Windows 程序通常需要两者。
【讨论】:
\r 作为其行终止符。由于 Mac OS X / OS X / macOS 是 Unix,旧的约定被放弃,取而代之的是单换行的标准 Unix 约定。
\n 只是换行符,\r\n 是换行符和回车符(即将光标向左移动)。
【讨论】:
'\n' 是 Unix 的默认值,'\r\n' 是 Windows 的默认值。
【讨论】:
不同的操作系统以不同的方式处理换行符。以下是最常见的简短列表: DOS和Windows
他们希望换行符是两个字符的组合,即 '\r\n'(或 13 后跟 10)。
Unix(因此也包括 Linux)
Unix 使用单个 '\n' 表示换行。
苹果机
Mac 使用单个 '\r'。
因此,当您使用文件夹路径等时,当您将应用程序从 Windows 移植到 Mac 时,这会导致问题。
【讨论】:
这就是新行在 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"" 进行网络的习惯,你 可能有一天会被烧毁。
【讨论】:
区别在于不同的操作系统,在 Windows 上,换行符是 \r\n 而在 Linux 上只是 \n Mac OSX 只是 \r 这实际上只是操作系统设计者制作的问题应该是
【讨论】:
在 C# 中,您可以只使用 Environment.NewLine
【讨论】: