我们平时按下键盘上的‘回车键’,就能实现回车换行【我们在屏幕上所看到的就是光标移到了下一行的开头位置!!ps:不讨论软件实现的特殊功能,如word里的回车智能缩进】。因此对这个按键更准确说应该叫做‘回车换行键’

就且将这种将光标移到下行开头的功能称作回车换行吧【注意这和下面将谈到的“回车字符”、“换行字符”的区别】!!不同系统对这种功能的实现采用了不同的方式。如Windows用两个控制字符\r\n实现,而Linux/Unix将其设计为\n,Mac也已改为\n。(网上好多文章仍写着MAC是\r!!)

Windows \r\n 0D0A
Linux/Unix \n 0A
Mac 旧为\r,现已改为\n 已改为:0A

//\r是Mac OS 9版本及其之前的回车换行,其后版本为MAC OS X(基于Unix基础了),回车换行已改为\n

//MAC OS最后一个版本是2001年末发布的9.2.2版本!2001年3月发布MAC OS X10.0(猎豹)初始版本,其后苹果OS X版本多以猫科动物命名。更多内容请参见维基百科


\r\n在ASCii码下具体为:

 控制字符 16进制 10进制 Seq 缩写 含义
\n 0A 10 ^J LF LineFeed(换行,Newline)
\r 0D 13 ^M CR Carriage Return(回车)

对比下:   Ascii下,10进制:A是65(41H),a是97(61H),0是48(30H)


关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。

1.电传打字机(Teletype Model 33)【读者可到国外网站如Youtube搜一下相关视频,了解一下它的工作原理。】我截了几张图:

(下面是我自己描述的,很不专业!!若想有更深刻的了解,最好看下视频,,能摸到这种老古董更好:) )

方框3:其中,左边的那个是换行按键【即使卷筒上的纸上移一定距离】。。右边的是回车按键【即打字机械移回到最左边】

箭头1:是附着在卷筒上的。按下换行键(方框3中左边的那个按键)后,纸就会随着卷筒的滚动往上移动一定距离(行间距吗!?)。。。

箭头2:很机械化的装置啊,我就叫它打字头吧。可以观察到:每按下一个按键(不是指全部,个别按键有特殊功能),打字头会往纸上打字【原理?不深究了】,然后会往右移动一下【很容易想到,空格按键和缩进按键不往纸上打字,只移动打字头,且后者的移动距离更大】。。。什么时候想把这该打字头移到最左边,就按一下回车键(方框3中右边的那个按键)。【当然,因为我们目的是要往纸上打字,因此还需要再按下左边的换行键。不然的话打字头还处在原来的那行,那行字也会被覆盖掉。。因此,回车键和换行键肯定是要一起用的】。。。而且,当打字头移到了纸的最右边而必须要换行时,这个打字机是会自动发出铃声提醒的(详情去Youtube看视频)

箭头4:纸带。。。。那几排按键(这就是键盘的起源吗!?):每个按键都有与之对应的针孔。启动打印 针孔带 的功能后(看图,箭头4下面有4个拨动开关),每次按下的键(什么a呀,b呀,空格呀,缩进呀,回车呀...),其对应的针孔排列就打到纸带上。呶,就从箭头5处流出来了。样子参见旁边的图

箭头6:就是它实现了电传打字机的自动打字功能,把得到的针孔纸带扣到这个箭头6所在的装置上(就是图中5、6箭头之间的那块灰色方方的地方),然后拨动箭头6指向的开关,这样,整个打字机就会自动打字了。。。并不是说该打字机打字必须要针孔纸带,前面说了,那几排按钮本身就能往纸上手动打字,同时可选择是否往纸带上打针孔以便以后重复使用。

总结:当我们得到已经制作好的针孔纸带时,把它扣到箭头6所在的装置上,打开开关,就能实现自动化打字了:打一个字母,打字头移一位,当要移到纸下一行开头打字时(何时取决于按下的回车和换行键),打字头先移到最左边,然后纸卷筒上移一下,,然后继续打字。。。。。自己需要制作针孔纸带或想手动打字时,可靠那几排按钮操作。。。(主要注意的就是回车换行:先按下回车按键,再按下换行按键...嗯,两者可以换个顺序吗?)。。

 2.(选自网上)在计算机还没有出现之前,这种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行进行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这两个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个字符叫做“回车”,告诉打字机把打字头定位在左边界;另一个字符叫做“换行”,告诉打字机把纸向上移一行。【可见,上面几张图所述的这种打字机,其已经是解决好了的:即回车、换行也有了对应的针孔(代表相应的字符,控制字符)】
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。


实验证明:

1.我在Windows下用EditPlus编辑器输入如下内容:                                            然后用16进制形式查看:

           

从图中的0D和0A可以知道按下的回车换行键会插入不可见的两个字符\r \n(不可见,但上述编辑器用小数点取代了其位置)

2.经我在VMWare下的ubuntu12.04系统(linux系统)实验发现(下图),ubuntu默认的确是\n.......但是\r\n  \r这2者在其默认文本编辑器gedit下仍能正常换行的!

而在Windows下用相应hex编辑器为文本添加\r或\n字符后,用Windows自带的记事本中打开:两种字符无任何显示作用。而在Editplus文本编辑器下显示为一小段空白!!

3.MAC OS X 10.7

用UltraEdit for Mac编辑器,输入字母与回车,用十六进制查看:

可看到回车的确是\n


总结:虽然不同的回车换行控制符在不同的系统、不同的软件下显示可能正常、可能不正常。。。但至少证明了这个事实:3类系统的确采用了相应的控制字符或字符组合来实现的回车换行。

不同系统下的回车\r和换行\n,及其历史的更多相关文章

  1. 回车\r与换行\n

    在计算机出现之前,有一种电传机械打字机,每秒可以打10个字符.但是有一个问题,就是打满一行后,需要进行换行,换行是需要0.2秒.如果这时有字符传入,就会丢失两个字符.为了解决这个问题,便定义了两个字符 ...

  2. 【零碎小bug系列】windows下的回车和换行符,cmd(telnet)上输出不左对齐

    cmd(telnet)上输出不左对齐,而是有莫名其妙的空格 目录 cmd(telnet)上输出不左对齐,而是有莫名其妙的空格 背景 解决 细究 背景 在cmd上使用telnet连接本地端口的服务器时, ...

  3. 如何用python在Windows系统下,生成UNIX格式文件

    平时测试工作中,少不了制造测试数据.最近一个项目,我就需要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮嘱我:“文件中凡是遇到换行,换行符必须是UNIX下的LF,而不是 ...

  4. <pre>标签:\r\n换行符的保留

    mysql数据读库的\r\n换行符处理 这个问题是我在采集数据时发现的,采集网页的数据,大概有6千多条,采集的内容保留了最原始的\r\n和\n换行字符,但在mysql管理工具中(phpmyadmin和 ...

  5. 换行符 \r \n \r\n 在不同系统下的区别

    '\r'是回车,前者使光标到行首,(carriage return)'\n'是换行,后者使光标下移一格,(line feed)\r 是回车,return\n 是换行,newline对于换行这个动作,u ...

  6. 转:LINUX/UNIX下的回车换行与WINDOWS下的区别

      今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 3 ...

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

    转载链接:http://blog.csdn.net/tskyfree/article/details/8121951 一.概念: 换行符‘\n’和回车符‘\r’ (1)换行符就是另起一行  --- ' ...

  8. 网上找的一篇博文,原文搞错了,应该是\r\n,本文已改正!——回车CR和换行line feed

    "回车"(carriage return)和"换行"(line feed)与 ASCII表 关于“回车”(carriage return)和“换行”(line  ...

  9. '\r'(回车符),'\n'(换行符)与"\r\n"

    一.'\n','\r'和"\r\n" 回车\r本义是光标重新回到本行开头,r的英文return,控制字符可以写成CR,即Carriage Return(回车,carriage有&q ...

随机推荐

  1. 【iCore3 双核心板】例程三十一:HTTP_IAP_FPGA实验——更新升级FPGA

    实验指导书及代码包下载: http://pan.baidu.com/s/1gdYnQGN iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  2. 24 个你应该了解的 PHP 库

    24 个你应该了解的 PHP 库 2015-09-08    分类:WEB开发.编程开发.首页精华暂无人评论     来源:伯乐在线 分享到:更多3 二十万年薪PHP工程师培养计划 成为被疯抢的And ...

  3. XHTML表单

    1.HTML表单标记提供一套元素和属性,用来创建表单,收集网页参观者信息. 2.创建表单结构标记为<form>和</form>. 3.在<form>标记中,我们必须 ...

  4. JQuery-筛选

    /* 六丶筛选 */ // console.log( $("div:first") ); // div#id_1 所有div中的第一个 // console.log( $(&quo ...

  5. ASP.NET 访问路径 错误提示 HTTP 错误 404.8 原来路径中包含bin目录被拒绝

    HTTP 错误 404.8 - Not Found HTTP 错误 404.8 - Not Found 请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径. 最可能的原因 ...

  6. discuz安装

    1.upload文件复制到根目录下,访问,安装 2.数据库需要提前建好 3.数据库地址默认是localhost,我安装时是127.0.0.1 4.最好在本地安装时,配置本地域名和线上域名一样,不然迁移 ...

  7. angularJs指令执行的机制==大概的三个阶段

    第一阶段:加载阶段 angularJs要运行的话,需要去等待angular.js加载完成,加载完之后呢,angular就会去查找到ng-app这个指令,ng-app在每个应用里面只能出现一次, 它也就 ...

  8. Java中的集合框架

    概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...

  9. 使用 robotframework 自动化测试系列 二 -----环境搭建

    环境搭建是测试人员基础,本质都是不难的,按照流程和步骤一步步做,遇到问题不要担心,解决的问题越多,你理解的也就越多. 1. 安装python环境,python现在有python2 和python3.由 ...

  10. dede 数据库类使用列表

    dedecms的数据库操作类,非常实用,在二次开发中尤其重要,这个数据库操作类说明算是奉献给大家的小礼物了. 引入common.inc.php文件 require_once (dirname(__FI ...