应该总是一起使用回车符 \r 和换行符 \n 吗?\r\n

9
在JavaScript中,这是一个跨浏览器兼容性问题,因此两者都被使用,但在不同语言的许多实例中,我看到两者一起打印为\r\n。现在是否仍然普遍接受通常只需使用两者其中之一,还是有时语言理解两者并且你最终会得到一个换行符和返回符?
2个回答

8

CRLF组合是大多数互联网协议中所期望的行尾标记(EOL)。

在这里,Postel的“鲁棒性原则”应该适用。即在接受数据时要开明,但在发送数据时要遵循相关标准。因此,要准备接收仅LF,但如果您正在发送数据,请使用符合相关标准的任何标记。


鲁棒性原则是HTML混乱的原因。该死的原则! :-) - Vinko Vrsalovic
你也应该接受CR,因为一些旧系统只使用CR。 - Brad Gilbert
不,你应该在接受内容时相当严格,在输出内容时非常严格。这可以减少意外错误的发生,其中某些东西试图猜测可能存在的歧义含义,而不是拒绝它。 - staticsan
staticsan - 27 年的互联网协议都不同意你的说法。请参阅 RFC793。 - Alnitak

3

这不是语言兼容性问题,而是文件或协议问题。就文件而言:Unix使用\n作为回车符,Windows使用\r\n,我认为MacOS使用(现在不确定)\r。许多“跨平台”语言将其抽象成一个平台相关的变量。就协议而言:取决于协议规定。


1
当前的Macintosh操作系统(OS X)是Unix,并使用换行符('\n')作为行分隔符。CP-M/MS-DOS/Windows使用\r\n,因为早期字符模式打印机需要一个控制字符将打印头移动到左边距(\r),并且需要一个控制字符将纸张向前移动一行(\n)。 - joel.neely

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接