换行符\r \n LF

前言:在对照PSR-2规范时,看到文件结尾必须要以Unix LF(linefeed)结尾,不懂查~

来源于:http://www.cppblog.com/prayer/archive/2009/08/19/93854.html

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix系统里,每行结尾只有“<换行>”,即"\n";

Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;

Mac系统里,每行结尾是“<回车>”,即"\r"。

一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号(vi时有见过这个标识,奈何当时不懂~)

在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.
Dos和windows采用回车+换行CR/LF表示下一行, 
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
CR用符号‘\r‘表示, 十进制ASCII代码是13, 十六进制代码为0x0D; 
LF使用‘\n‘符号表示, ASCII代码是10, 十六制为0x0A.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.
一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件.
在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时. 有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错.
很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换.
在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化. 如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本.

原文地址:https://www.cnblogs.com/efan/p/8367707.html

时间: 2024-08-02 13:25:45

换行符\r \n LF的相关文章

c#使用Split分割换行符 \r\n

c# 使用Split分割 换行符,方法如下(其余方法有空再添加): string str = "aa" + "\r\n" + "bb"; string[] ss = str.Split(new string[] { "\r\n" }, StringSplitOptions.None);

Linux下的换行符\n\r以及txt和word文档的使用

Linux doc WINDOWS下记事本编写的文档和LINUX下VIM或者GEDIT等编写的文档的不同! 例如WINDOWS下编写的SH脚本,放到LINUX下执行可能会出错. 解决方法: 原因是:Windows下换行符号是“\r\n”,而linux下是“\n”没有”\r”,当shell文件是在Windows下编写的时候,所有的换行符都是“\r\n”,shell下是没办法执行这个文件的,会提示以上错误.请在ultraedit下将该文件执行“File->conversions->Dos to U

掰碎了讲换行符和回车符

一开始对这个概念还只是有点模糊,不太在意,结果一搜索才发现,这东西太有意思了,不仅有个有趣的故事,而且本身也有很多门道,还勾起了一些之前的回忆,原来以前也跟这个问题打过交道啊. 1基本概念 控制字符 本义 换行符 \n newline LF (Line Feed) 光标直接往下一行(不一定是行首) 回车符 \r return CR(Carriage Return) 光标重新回到本行开头 基本概念如上表所示. 2由来 为什么会有这两个东西呢?它有一个有趣的传说:在计算机还没有出现之前,有一种叫做电

C#(去、过滤)掉字符中的换行符

原文:C#(去.过滤)掉字符中的换行符 原文地址: http://www.feedou.com/articlepickservlet?commandkey=singlearticle&articleID=5c42b75f1b435084011b49ba083217d4 本文介绍的方法需要先导入命名空间:usingSystem.Text.RegularExpressions; 字符串里所有的的换行符都去掉:textStr = Regex.Replace(textStr, @"[/n/r]&

C# 中几种换行符

1.Windows 中的换行符"\r\n" 2.Unix/Linux 平台换行符是 "\n". 3.MessageBox.Show() 的换行符为 "\n" 4.Console 的换行符为 "\n" 换行符还因平台差异而不同. 为保持平台的通用性,可以用系统默认换行符 System.Environment.NewLine.

json的中换行符的处理

json作为ajax常用的一种数据类型,经常使用.但如果字段中出现换行符如何处理? 去掉显然不合适.有些字段本来就有换行符,如何能去掉? 测试一下json类的处理,也没有发现.想不到最终的处理确实如此简单: 后台代码把换行符\r\n替换为 \\r\\n,前台代码js收到的字符就是\r\n 例:将 字段值的内容为 mp3的lrc 文件中的内容 ,转换成 json 格式. lrcc = a_lrc_content lrcc = replace(lrcc,"'","\'"

windows和linux中换行符的转换

数据开发平台使用上传脚本报错:保存失败,文件编码格式不正确,请修改文件换行符为Unix终束符! 修改方式:DOS系统下,使用文本编译器另存为,然后选择换行符为unix终束符. 解释: windows 文件的换行符为:[CR][LF] Linux和Unix文件的换行符为:[LF] 有些需要转换使用,如修改或替换安卓andriod的hosts文件,需要保证换行符为Unix形式才能使用. 其中一种办法是在linux系统中重新保存一份文件: 但是:如何在windows系统中,转换成Unix / Linu

回车符(CR)与换行符(LF), &#39;\r&#39;和&#39;\n&#39;的区别

回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正 好可以打两个字符.要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失. 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符.一个叫做“回车”,告诉打字

Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n

转载链接:http://blog.csdn.net/tskyfree/article/details/8121951 一.概念: 换行符‘\n’和回车符‘\r’ (1)换行符就是另起一行  --- '\n' 10 换行(newline) (2)回车符就是回到一行的开头 --- '\r' 13 回车(return) 所以我们平时编写文件的回车符应该确切来说叫做回车换行符     二.应用: (1)在微软的MS-DOS和Windows中,使用“回车CR('\r')”和“换行LF('\n')”两个字符