`

关于linux和windows的CR, LF, CR/LF 回车 换行问题

阅读更多

在文本处理中, 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模式(二进制模式)传输文本.

先转一段关于回车和换行的历史。
回车和换行关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

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

Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打 开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。 


分享到:
评论

相关推荐

    UE中文版编辑器

    UE中文版编辑器绿色免安装版 文档大小不受限制,即使是数兆字节的...-自动换行模式转换到CR/LF's 允许用硬回车将自动换行写入文件 -CR/LF's 转换到自动换行(从文件删除 CR/LF's) -支持模板 -代码折叠、、、

    GIT 换行符自动转换导致整个文件被修改的解决方案

    Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。而git入库的代码采用的是LF格式,它考虑到了跨平台协作的场景,提供了“换行符自动...

    超级串口调试工具V6.0

    发送字符串可自动加回车换行等行尾标识,系统提供回车换行(CRLF)、回车(CR)、换行(LF)及自定义行尾标识。&lt;br/&gt; 10.绿色软件,单个文件即可执行,不会给您的机器增加任何负担。&lt;br/&gt; 11.VS.NET 2005平台,C#2.0开发...

    CentOS7运行.sh脚本提示syntax error: unexpected end of file的解决方法

    shell脚本在本地电脑编辑的,格式是dos(可以用vi编辑该shell脚本,进入命令行模式,输入:set ff 回车即可看到左下角显示fileformat=dos),在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”...

    3-2019051115-邓芷灵-Internet应用与应用层协议分析1

    (图中的\r\n即“CR”“LF”,分别代表“回车”和“换行”,开始行及首部行结尾固有)(2)HTTP响应报文分析逐行分析如下:(图中的\r\n即“CR”“LF

    最直观、最全的ASCLL码列表

    常见ASCII码的大小规则 0~9~Z~z 1)数字比字母要小。如 “7”“F”; 2)数字0比数字9要小,并... 换行LF为0x0A;回车CR为0x0D;空格为0x20;“0”为0x30; “A”为0x41;“a”为0x61。另外还有128-255的ASCII字符。

    ASCII码表完整版

    STX 正文开始 CR 回车 CAN 作废 ETX 正文结束 SO 移位输出 EM 纸尽 EOY 传输结束 SI 移位输入 SUB 换置 ENQ 询问字符 DLE 空格 ESC 换码 ACK 承认 DC1 设备控制1 FS 文字分隔符 BEL 报警 DC2 设备控制2 GS 组分隔符 ...

    ascll码表概述、原理及应用详解.pdf

    具体来说,0~31及127(共33个)是控制字符或通信专用字符,如控制符LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符如SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII...

    Git处理换行符问题

    Note:引自回车(CR)与换行(LF),'r'和'n'的区别.这就是造成问题的根源——即如果你使用的是windows系统,而你的小伙伴用的是Mac的话,当你们使用git协同开发软件时,就会出现换行符不统一的问题。git其实可以自己处理...

    ascall码.docx

    第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等; 通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等; 第33~126号(共...

Global site tag (gtag.js) - Google Analytics