CR与LF

CR(carriage return),中文名称“回车”;LF(line feed),中文名称“换行”。无论是初学编程的小白还是入行十年的资深,总会有人搞不清楚这两者的区别。回车与换行到底是什么关系呢?

CR与LF的来历

首先需要说明的是“回车”指的是'\r',ASCII码为0xOD(13),而换行符指的是'\n',ASCII码为0x0A(10)。
关于回车与换行的来历,网上有一段不错描述可以参考。

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在
这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix/Linux 系统里,每行结尾只有“”,即“\n”;Windows系统里面,每行结尾是“”,即“\r\n”;Mac系统里,每行结尾是“”,即“\r”(现在已改成跟Unix/Linux一样的"\n")。

不同换行符的影响

一个直接后果是,Unix/Linux/Mac系统下的文件在Windows里打开的话,会出现换行丢失,整个文本会乱成一团。(类似UltraEdit 这种编辑器可以正确识别); 而反过来就会出现^M的符号(这是Unix/Linux 等系统下规定的特殊标记,占一个字符大小,不是^和M的组合,打印不出来的,可以通过ctrl+V, ctrl+M 输入)。Unix/Linux 下很多文本编辑器(命令行)会在显示这个标记之后,补上一个自己的换行符,以避免内容混乱(只是用于显示,补充的换行符不会写入文件,有专门的命令将Windows换行符替换为Unix/Linux 换行符)。 Unix/Linux 系统下的换行符在Windows系统的文本编辑器中会被忽略,整个文本会乱成一团。

不同换行表示的互相转换

现在的编辑器如UltraEdit之类的都具有转换的功能,而IDE如JetBrains系列的产品,也都具有换行转换的功能。总之,这并不是一件很难的事情,你只需要在网上搜一下就很容易得到一个可行的解决方案。

CR与LF的更多相关文章

  1. 回车与换行的区别:CRLF、CR、LF

    引言 以下是 MySQL 8 导出数据的窗口,导出数据时需要选择记录分隔符,这就需要你明白 CRLF.CR 和 LF 分别代表什么,有何区别,否则可能导出数据会出现莫名其米的问题. 名词解释 CR:C ...

  2. 计算机编码中的换行 CR与LF

    以下的文字为转载,但是有错误的地方,博主自行进行了修正和补充,用红色标示. 原文地址在这里. ------------ 转载起始 ------------- “回车”(Carriage Return) ...

  3. CRLF、CR、LF详解

    名词解释 CR:Carriage Return,对应ASCII中转义字符\r,表示回车 LF:Linefeed,对应ASCII中转义字符\n,表示换行 CRLF:Carriage Return &am ...

  4. CR和LF

    现在的电脑操作系统主要有windows.unix/linux.macos这三种. 首先, 回车:英文(carriage return ),缩写CR 换行:英文(line  feed),缩写LF 在wi ...

  5. HttpWebRequest出错 服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF

    服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF  The server committed a protocol violation. Se ...

  6. CR LF的由来

    学习Esperanto时用到一款叫做Kajero的软件,支持世界语特殊字符编辑. 在Option菜单中有个选项,End of line 列出了四种换行方式 这四种都是由基本CR和LF组成.那么CR和L ...

  7. [转]CR, LF, CR/LF区别与关系

    http://weizhifeng.net/talking-about-cr-lf.html 前言 在文本处理中,CR(Carriage Return),LF(Line Feed),CR/LF是不同操 ...

  8. 终于记住回车和换行cr lf的来由和含义了 -参考: http://www.cnblogs.com/me115/archive/2011/04/27/2030762.html

    回车: carriage return, 是将光标在同一行中, 回到当前行的 行首. 回来的本意就是 返回.. 所以 是同一行的行首. CR 换行: line feed: feed: 饲养(动物); ...

  9. CR, LF, CR/LF 回车 换行

    [时间:2016-07] [状态:Open] 本文主要介绍"回车"(Carriage Return)和"换行"(Line Feed)这两个概念的来历和区别. C ...

随机推荐

  1. [转]Gridview实现多列排序,并显示图标

    本文转自:http://blog.csdn.net/gmjinrong/article/details/4516301 GridView实现支持多列排序,并显示升.降序图标上网找了很多资料参考才解决了 ...

  2. Bootstrap中的datetimepicker插件用法总结(转载)

    datetimepicker用法总结   目录 datetimepicker用法总结 目录 简述 官方文档 选项属性 1 format 格式 2 weekStart 一周从哪一天开始 3 startD ...

  3. JDBC使用DBUtils

    1.commons-dbutils commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jd ...

  4. ajax请求下载Execl表

    Execl表是经常要用到的存放二位数据的表格,Java也可以直接操作Execl表,经常用到的方式就是jxl和poi. 在这次项目中,我用到的poi往Execl中写数据,刚开始设计的是前端发送一个aja ...

  5. mybatis-plus之Mapper CRUD接口和 Service CRUD 接口

    中文官网链接: https://mp.baomidou.com/guide/crud-interface.html

  6. js遇到的问题

    一些开发前台时遇到的小问题: ----------------------------------------- 一眼看出页面使用html还是html5: html有三种声明方式:<!DOCTY ...

  7. 列表 enumerat 解包, 针对索引和元素

    dic = [1,2,3,4,5] for a,b in enumerate(dic): print(a,b) # a就是索引 b是元素

  8. WPF ListView 分组 Grouping

    在Resource里定义数据源和分组字段: <CollectionViewSource x:Key="listData" Source="{Binding Cate ...

  9. web service概念、架构及相关知识

    原文:http://blog.csdn.net/liu_shi_jun/article/details/51121597 一.WebService的定义 WebService有好几种定义: W3C组织 ...

  10. Vue 框架-12-Vue 项目的详细开发流程

    Vue 框架-12-Vue 项目的详细开发流程 首先,如果你还不了解 Vue 脚手架怎么搭建? 默认的环境中有哪些文件? 文件大概是什么作用? 那么,您要先查看之前的文章才有助于你理解本篇文章: Vu ...