回车的传说---兼谈\n\r区别

转载 2013年12月04日 16:05:55
如果你有在windows下编程的经验就会发现windows下敲下回车键会产生两个字符CR和LF,用16进制编辑器打开windows下的文本文件也会看到换行是0D和0A表示的,也就是CR和LF的ASCII编码。而在UNIX类系统中换行只有一个字符LF,所以UNIX中的文本文件在windows中用记事本打开会出现不可解析字符且丢失换行格式,所有字符连成一行。
    因为windows下的记事本读到LF时不知道这就是换行(只有CR和LF连续出现才能解释为换行),于是当作不可打印字符处理,就是一个黑色方框。CR和LF分别表示“回车”(carriage return)和“换行”(line feed),ASCII编码为13和10,在C语言中用\r和\n表示。
    为什么windows下要用两个字符表示换行?这就是今天要讲的故事:《回车的传说》

    在计算机刚刚诞生之时,广泛使用Teletype公司制造的一种古老的终端(console terminal)电传打字机ASR33。ASR33每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,打印头从行尾移到行首再下移一行要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失,那时可没有缓冲区暂存。Teletype的研究人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

( 1968年盖茨在湖滨中学玩的就是这种机器,他们通过这种终端编写BASIC程序。因为 ASR 33只使用大写字母,所以BASIC程序以大写字母为主)
    后来,计算机的史前时代结束了,小型机诞生了,现代文明的键盘也发明了,但回车和换行的概念仍被保留下来。一些计算机设计者认为在每行结尾加两个字符太浪费也没有必要了,加一个就可以。于是就出现了分歧。
    Unix系统里使用<line feed>表示换行,每行结尾只有一个换行符\n,MSDOS和Windows系统里面每行结尾是<回车><换行>(<carriage return><line feed>)即\r\n,Apple的Mac系统里每行结尾是<回车>(<carriage return>)即\r。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,某些文本编辑器可能在每行的结尾会多出一个^M符号。

扫盲 DNS 原理,兼谈“域名劫持”和“域名欺骗/域名污染”

前天下午(1月21日),咱们天朝发生了全国性的互联网故障,导致大量国内网站无法访问。这次故障说白了就是一次全国性大范围的域名污染。所以俺借此机会,给大伙儿扫盲一下 DNS 的常识。既然是扫盲 DNS,...
  • u010889861
  • u010889861
  • 2016年12月07日 15:03
  • 1122

《Word排版艺术》读后感——兼谈与LaTeX的比较

《Word排版艺术》读后感——兼谈与LaTeX的比较 我有两年多的LaTeX使用经验,用它排实验报告、毕业论文和书籍(半本);Word的使用时间长一些,但真正用好也不过是近一两年的事。这两个软件我都用...
  • Solstice
  • Solstice
  • 2004年11月19日 12:52
  • 22851

用 JSON 表现树的结构兼谈队列、堆栈的练习(一)

接触 JSON 的人都知道,JSON 可通过 K/V(Key/Value) 结构很直观地表现一棵树,因为 V 可以“包含”另外一个 K/V 从而不断嵌套下去形成“树状”的结构。但 V 不一定必须为另外...
  • zhangxin09
  • zhangxin09
  • 2017年08月02日 11:05
  • 517

论机器人的环境感知与智主移动-兼谈基于微分几何的人工智能

论基于微分几何的机器智能-兼谈机器人的环境感知与智主移动 ● 序言 ● 第一章 当前智能算法 卷积网络机器学习深度学习可能的缺陷 ● 第二章 微分几何与智能 人脸及表情识别与微...
  • hjwang1
  • hjwang1
  • 2016年01月07日 15:06
  • 828

回车的传说

如果你有在windows下编程的经验就会发现windows下敲下回车键会产生两个字符CR和LF,用16进制编辑器打开windows下的文本文件也会看到换行是0D和0A表示的,也就是CR和LF的ASCI...
  • willshine19
  • willshine19
  • 2015年11月28日 11:16
  • 196

朱松纯:初探计算机视觉三个源头兼谈人工智能

朱松纯   加州大学洛杉矶分校UCLA统计学和计算机科学教授(Song-Chun Zhu;www.stat.ucla.edu/~sczhu) 杨: 朱教授,你在计算机视觉领域耕耘20...
  • jiandanjinxin
  • jiandanjinxin
  • 2016年12月06日 14:56
  • 935

换行和回车的区别

我们在看他们的区别时我们先看看他们的分别指的是什么:  回车(carriage return):告诉打印机把打印头定位到左边界,就是指的,那个打印头重新放在这一行的开始。 换行(line feed...
  • xuaomo
  • xuaomo
  • 2017年01月02日 12:45
  • 1312

终于搞懂了回车与换行的区别

转载于:http://www.pythontab.com/html/2017/linuxkaiyuan_0115/1116.html 关于换行和回车其实平时我们不太在意,所以关于两者的区别也不太...
  • fanwenbo
  • fanwenbo
  • 2017年02月03日 17:31
  • 6368

双子天蝎,爱情是不老的传说

 双子天蝎,爱情是不老的传说自注:此文章乃双子座所写,定有主观上的个人倾向.转帖者:就是我啦,一个双子座的帅哥(自封)关于双子和天蝎,我是很想很完整的写一些,但心中总是不情愿去表达某些感触,那是一种沉...
  • MasterFT
  • MasterFT
  • 2007年06月12日 15:01
  • 3192

6. equals 与 == 区别

对于引用类型 :== 比较引用的地址,equals比较值 对于基本类型: == 比较值
  • hackeraaa
  • hackeraaa
  • 2016年03月18日 21:30
  • 140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:回车的传说---兼谈\n\r区别
举报原因:
原因补充:

(最多只允许输入30个字)