\n(换行符)和\r(回车符)有什么区别?
特别地,\n和\r之间有什么实际的区别吗?是否有应该使用其中一种而不是另一种的地方?
\n(换行符)和\r(回车符)有什么区别?
特别地,\n和\r之间有什么实际的区别吗?是否有应该使用其中一种而不是另一种的地方?
当前回答
两个不同的角色。
\n在Unix文本文件中用作行结束符
\r历史上(在os X之前)在Mac文本文件中用作行结束符
\r\n(即同时使用)用于终止Windows和DOS文本文件中的行。
其他回答
更令人困惑的是,我一直在使用浏览器中的HTML页面中的TextArea元素编写一个简单的文本编辑器。考虑到CR/LF的兼容性问题,我编写了代码来检查平台,并使用适用于平台的换行符约定。
然而,当检查TextArea中包含的实际字符时,我发现了一些有趣的事情,通过一个小的JavaScript函数生成对应于字符的十六进制数据。
为了测试,我输入了以下文本:
你好,世界(输入)
再见,残酷的世界[进入]
当我检查文本数据时,得到的字节序列是这样的:
48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 0a 47 6f 6f 64 62 79 65 2c 20 43 72 75 65 6c 20 57 6f 72 6c 64 0a
现在,大多数人看到这个,看到0a而没有0d字节,会认为这个输出是在Unix/Linux平台上获得的。但是,这里有一个问题:我在Windows 7 64位的谷歌Chrome中获得的这个序列。
因此,如果你正在使用一个TextArea元素并检查文本,检查输出,就像我上面所做的那样,以确保从你的TextArea返回的实际字符字节。我还没有看到这在其他平台或其他浏览器上是否有所不同,但如果您通过JavaScript执行文本处理,并且需要使该文本处理平台独立,那么就值得记住这一点。
上述文章中涉及的约定适用于控制台输出,但HTML元素似乎遵循UNIX/Linux约定。除非有人在不同的平台/浏览器上发现了其他情况。
在ascii码方面,它是3——因为它们分别是10和13;-)。
但说真的,有很多:
in Unix and all Unix-like systems, \n is the code for end-of-line, \r means nothing special as a consequence, in C and most languages that somehow copy it (even remotely), \n is the standard escape sequence for end of line (translated to/from OS-specific sequences as needed) in old Mac systems (pre-OS X), \r was the code for end-of-line instead in Windows (and many old OSs), the code for end of line is 2 characters, \r\n, in this order as a (surprising;-) consequence (harking back to OSs much older than Windows), \r\n is the standard line-termination for text formats on the Internet for electromechanical teletype-like "terminals", \r commands the carriage to go back leftwards until it hits the leftmost stop (a slow operation), \n commands the roller to roll up one line (a much faster operation) -- that's the reason you always have \r before \n, so that the roller can move while the carriage is still going leftwards!-) Wikipedia has a more detailed explanation. for character-mode terminals (typically emulating even-older printing ones as above), in raw mode, \r and \n act similarly (except both in terms of the cursor, as there is no carriage or roller;-)
In practice, in the modern context of writing to a text file, you should always use \n (the underlying runtime will translate that if you're on a weird OS, e.g., Windows;-). The only reason to use \r is if you're writing to a character terminal (or more likely a "console window" emulating it) and want the next line you write to overwrite the last one you just wrote (sometimes used for goofy "ascii animation" effects of e.g. progress bars) -- this is getting pretty obsolete in a world of GUIs, though;-).
不同操作系统的两个不同字符。这在通过TCP/IP传输的数据中也起着作用,这需要使用\r\n。
\ n Unix
\ r Mac
Windows和DOS。
历史上,a \n用于向下移动车厢,而\r用于将车厢移回页面的左侧。
两个不同的角色。
\n在Unix文本文件中用作行结束符
\r历史上(在os X之前)在Mac文本文件中用作行结束符
\r\n(即同时使用)用于终止Windows和DOS文本文件中的行。