`

关于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符号。 


分享到:
评论

相关推荐

    关于回车和换行

    ### 关于回车和换行的知识点 #### 1. 回车与换行的历史背景 在计算机技术尚未成熟之前,电传打字机(Teletype Model 33)是一种重要的通信工具,用于发送和接收电报。这种设备的工作原理是通过一系列的机械动作来...

    回车和换行的区别 回车和换行的区别

    这也意味着UNIX/Linux创建的文本文件在Windows系统上可能会因为缺少回车符而出现显示问题。 ### 跨平台文件处理 由于不同操作系统对行结束符的定义不同,这导致了在跨平台文件传输或共享时可能出现的兼容性问题。...

    回车与换行的区别详解

    回车与换行是计算机文本处理中的两个基本概念,它们起源于早期的电传打字机时代,以解决打印头定位和纸张移动的问题。在现代计算机系统中,这两个概念仍然有着重要的作用。 回车(Carriage Return),用字符`\r`...

    回车和换行区别

    在实际应用中,回车和换行的区别会造成一些问题。例如,在 Unix/Mac 系统下的文件在 Windows 里打开的话,所有文字会变成一行;而 Windows 里的文件在 Unix/Mac 下打开的话,在每行的结尾可能会多出一个^M 符号。这...

    CR LF CRLF转换

    在Windows系统中,行尾通常由一个回车字符(CR,Carriage Return)和一个换行字符(LF,Line Feed)组成,合称为CRLF;而在Unix和Linux系统中,仅使用一个换行字符(LF)来表示行结束。Mac OS Classic系统则使用单独...

    回车,换行,tab,空格

    回车(Carriage Return, CR)和换行(Line Feed, LF)是文本文件中用于控制光标移动和文本格式的两个重要概念。在早期的打字机时代,这两个操作是通过物理动作来完成的。电传打字机(Teletype Model 33)在打印文本...

    UNIX回车换行与Windows下的区别

    例如,当在Windows环境下打开一个纯UNIX格式的文本文件时,由于文件中只有换行符(LF),没有回车符(CR),因此Windows系统默认的记事本程序无法识别正确的换行位置,导致所有文本内容被显示在一行内,造成阅读困难...

    windows和linux、Mac系统换行规则的区别.docx

    标题和描述中提到的知识点主要围绕着不同操作系统——Windows、Linux和Mac——在处理文本文件换行规则上的差异。在早期的电传打字机时代,为了防止字符丢失,每行末尾添加了两个字符,一个是回车(CR),另一个是...

    奇怪的回车换行问题

    回车(CR,Carriage Return)字符(0x0D)会将光标移动到当前行的起始位置,而换行(LF,Line Feed)字符(0x0A)则使光标下移一行。 2. **类Unix系统**(如Linux、Mac OS X等):这些系统仅使用`\n`(0x0A)作为新...

    回车键换行.rar回车键换行.rar

    - 在Windows系统中,通常使用两个字符来表示一个新行:先是回车(CR),然后是换行(LF),也就是所谓的CRLF(Carriage Return Line Feed)。 - 在Unix和Linux系统中,只使用一个换行(LF)字符来表示新行。 - 在旧...

    Linux和windows中的换行符差异问题.docx

    例如,C语言的`scanf`函数在Linux中读取包含换行符的数据时,可能会读入回车和换行两个字符,导致程序行为不符合预期。解决办法之一是使用特定的命令或工具,如在Linux下使用`tr`命令删除或替换不需要的换行符,例如...

    Linux到WINDOWS文本文件转换程序

    在Linux系统中,每行文本的结束是以一个换行符(LF)表示的,而在Windows系统中,每行的结束则由两个字符组成:回车符(CR)和换行符(LF)。这种差异在跨平台操作时可能会导致文本文件显示不正常,例如,Windows下...

    深入Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)的详解

    Windows操作系统使用回车换行(\r\n)作为一行结束的标识,而Unix/Linux系统则只使用换行(\n)作为新的一行开始的标记,而在早期的Apple Mac OS系统中,回车(\r)就足够表示新行。 回车字符(CR,Carriage Return...

    Windows代码移植到Linux

    Windows平台的文本文件使用CR+LF(回车加换行)作为换行符,而Linux平台只使用LF(换行)。如果不统一换行符,可能会导致源代码在Linux编译器中出现错误。使用适当的编辑工具如EmEditor或秀丸,可以在文件保存时选择...

    关于换行和回车的图文小结

    例如,当一个程序从Windows系统读取文本文件并在Unix/Linux系统上进行处理时,可能需要将CR和LF的组合转换为单独的LF,反之亦然。 在本例中,通过在Windows系统和Linux系统中使用不同的文本编辑器创建相同内容的...

    lotus domino 开发资料 换行符号

    Unix/Linux系统通常只使用LF,而MacOS旧版本使用CR。因此,在处理可能在不同平台上运行的应用时,需要注意这些差异。 在Lotus Domino开发中,正确理解和使用换行符号是创建用户友好、功能完备的应用程序的关键。...

    回车和换行有什么区别?我们平时按下的Enter键是回车还是换行

    回车和换行是计算机文本处理中的两个基本概念,...总的来说,回车和换行是文本处理的基础,理解它们的工作原理以及在不同环境下的表现,有助于解决与文本相关的各种问题,特别是在进行系统间的数据交换和跨平台编程时。

    txt文件换行转换mfc

    例如,Windows系统通常使用回车换行(CR LF,即"\r\n")组合作为一行的结束,而Linux和macOS则使用换行(LF,即"\n")作为新行标志。当在不同系统间传输或处理文本文件时,这些差异可能导致显示问题。因此,进行换行转换...

    linux文本转换程序

    Linux系统使用LF(Line Feed,换行)作为行结束符,而Windows系统则使用CRLF(Carriage Return + Line Feed,回车+换行)作为行结束符。当Linux的LF格式的文本文件在Windows中打开时,因为缺少CR字符,Windows会将LF...

    Messagebox()如何换行

    在DOS和早期的Windows系统中,回车(`Chr(13)`)和换行(`Chr(10)`)经常一起使用,即 `Chr(13) + Chr(10)`,来完成一行的结束。而在现代操作系统和大多数编程环境中,`Chr(10)` 单独就足以表示新的一行。在处理多...

Global site tag (gtag.js) - Google Analytics