.net 提醒-\r\n或\n\r?

.net 提醒-\r\n或\n\r?,.net,windows,ascii,.net,Windows,Ascii,我就是不记得那些了。那么,正确终止旧式ASCII行的正确方法是什么呢?\r\n对于Windows来说就很好了。我会用“return”来记住,r在n之前。顺序是CR(回车)-LF(换行)。还记得点阵打印机吗?确切地因此-正确的顺序是\r\n来自(您可以在文章中阅读适用于您的操作系统的正确顺序): 基于ASCII或兼容标准的系统 字符集使用LF(行)或 馈送,'\n',0x0A,十进制为10)或CR (回车号,'\r',0x0D,13英寸 小数点),或后面跟着CR 按LF(CR+LF,'\r\n',

我就是不记得那些了。那么,正确终止旧式ASCII行的正确方法是什么呢?

\r\n
对于Windows来说就很好了。

我会用“return”来记住,r在n之前。顺序是CR(回车)-LF(换行)。还记得点阵打印机吗?确切地因此-正确的顺序是\r\n

来自(您可以在文章中阅读适用于您的操作系统的正确顺序):

基于ASCII或兼容标准的系统 字符集使用LF(行)或 馈送,'\n',0x0A,十进制为10)或CR (回车号,'\r',0x0D,13英寸 小数点),或后面跟着CR 按LF(CR+LF,'\r\n',0x0D0A)

如果您使用的是C#,您应该使用,根据MSDN,它是:

对于非Unix平台,包含“\r\n”的字符串;对于Unix平台,包含“\n”的字符串


在任何.NET语言中,
Environment.NewLine
都是首选。

如果您使用的是C#,为什么不使用
Environment.NewLine
?(我假设您使用了一些文件编写器对象……只需将其传递给
环境。换行符
,它将处理正确的终止符。

手动执行此操作时要小心。
事实上,我建议不要这样做

实际上,我们讨论的是特定于平台的线路终止序列LTS

如果以文本模式(即非二进制)打开文件,则流会将“\n”转换为适合您平台的正确LTS。然后在读取文件时将LTS转换回“\n”

因此,如果您将“\r\n”打印到windows文件,您将在物理文件中获得序列“\r\r\n”(使用十六进制编辑器查看)

当然,当涉及到在平台之间传输文件时,这是真正的痛苦


现在,如果您正在向网络流写入数据,那么我会手动执行此操作(因为大多数网络协议都会专门调用此操作)。但我会确保流不会执行任何解释(因此二进制模式是合适的)。

新行取决于您的操作系统:

DOS & Windows: \r\n 0D0A (hex), 13,10 (decimal)
Unix & Mac OS X: \n, 0A, 10
Macintosh (OS 9): \r, 0D, 13
详情如下:

如有疑问,请使用任何免费的十六进制查看器/编辑器查看文件如何对新行进行编码

对我来说,我使用以下指南帮助我记住:0D0A=\r\n=CR,LF=carriagereturn,line feed

\r\n
奇怪的是,我记得它,因为它与我使用的打字机正好相反。
如果这是正常的,我就不需要记住它了…
:-)

*来自维基百科的图片

在打字机中,当您完成对行的数字输入时,您可以使用滑架返回杆,该杆在使滚筒滚动之前、换行之后允许您手动操作滑架返回


您可以在开始时听到送纸的声音,在距离结束时间大约-1:03秒时,在铃声警告后听到滚筒滚动的行尾声音,以及在其中一个托架返回后听到送纸的声音

一个
\n
在windows上也可以,包括最新版本的记事本。我认为现代编辑器会检测行尾,因为不同的操作系统使用不同的尾端。实际上不会:如果在windows上打印到文件(以文本模式打开的std C/C++文件),物理文件将包含“\r\r\n”(用十六进制编辑器检查)。当你重新阅读时,“\r\n”被转换回单个“\n”。事实上,@davidcarn,我刚刚尝试过,但它在Win8上与记事本不起作用。我认为这是最符合逻辑的答案。在打印机上,LF+CR也会这样做。我不同意,@David。仅仅想到点阵式打印机(或者打字机,因为它们有一辆马车可以返回)是不够的。因为只有关于它们如何工作的基本信息,所以没有理由认为我们是在返回行的开始之前还是之后推进论文是重要的。\r\n和\n\r都将纸张放在相同的位置。@ikegami在大多数打印机上,而不是在所有打印机上。他们也有DIP开关来配置这种行为。:)在纸架返回后放置送纸器的一个原因是减少了所需的总时间——当纸头返回到纸张的左边缘时,压盘可以索引一行。较长的操作首先启动,因此整个操作在较长的操作执行时间内完成。当时我们做了很多事情都是出于这样的原因;想象一下,在110波特下等待几百行……实际上,这取决于你在做什么。如果您只是将纯文本输出到控制台或文件中供本地使用,
Environment.NewLine
就可以了。但是,如果您正在以定义良好的格式编写内容,那么该格式也可能定义换行符。例如,HTTP协议规定您必须使用
\r\n
作为标题等的行终止符,而不考虑平台。是的,这是非常糟糕的建议。这就是为什么您需要逃避web消息并构建单元测试来验证发送\r\n(windows),\r(mac),\n(linux)正确地作为\r\n发送到Web服务器。要记住要使用的单词是return,请记住\r是回车。不要记住“Return”是Mac键盘上键的名称,否则您可能会在稍后查看PC键盘时,看到名为“Enter”的键,并将字母顺序弄错@David但是我想知道
\n\r
\r\n
的效果是一样的,它们不是有同样的效果吗?你能看出区别吗?@Mr.Anubis如果你有某种点阵打印机,应该没有区别,因为命令的顺序不重要。然而,在一些打印机上,您会得到额外的空行,或者根本没有行推进。上面所说的每一件事都适用于文本编辑器——他们会感到困惑,文本流类会生病,等等。秩序很重要。:)@丹尼尔莫蒙多尔酒店