我们平时按下键盘上的‘回车键’,就能实现回车换行【我们在屏幕上所看到的就是光标移到了下一行的开头位置!!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. IOS第18天(4,核心动画,时钟效果,定时器,图片旋转角度,CALayer 锚点,获取当前,小时,秒,分)

    **** #import "HMViewController.h" // 每秒秒针转6度 #define perSecendA 6 // 每分钟分针转6度 #define perM ...

  2. php的字符串处理函数

    Strpos($str,”img”); //返回字符串的位置 Substr($str,int start,int length); 使用这两个函数可以截取字符串

  3. JSTL标签使用说明

    使用jstl需进行以下操作 a.下载jstl. b.解压jar文件将jstl.jar和standard.jar文件放到项目lib文件夹. c.在需要使用jstl地方引用标签库,比如在jsp页面引用以下 ...

  4. mysql root 维护

    修改root密码: mysql -uroot -paaamysql> use mysql;mysql> UPDATE user SET password=password("aa ...

  5. Where is the Global.asax.cs file

    I am using VS 2008. I have created a new Asp.net web site project from File->New->Website-> ...

  6. linux下开启防火墙,打开端口

    service iptables start时提示:“iptables: No config file.                                  [WARNING]” 此时打 ...

  7. LightOj 1213 - Fantasy of a Summation(推公式 快速幂)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1213 #include <stdio.h> int cases, case ...

  8. 使用 HTML5 input 类型提升移动端输入体验

    在过去的几年里,在移动设备上浏览网页已变得难以置信的受欢迎. 但是这些设备上的浏览体验,有时遗留很多的有待改进.当涉及到填写表单时,这一点尤为明显.幸运的是,HTML5规范引入了许多新input类型, ...

  9. windows的Timer和写文件方式串口注意!

    1.Timer要读取并分发消息,才能触发自定义回调函数 SetTimer(NULL, 1, 40, (TIMERPROC)TimerProc); while(GetMessage(&msg, ...

  10. Mac系统安装jdk和maven

    一.安装jdk 1.查看java链接到了哪里: 进入到相应的目录:cd /usr/bin 查看java链接到了哪里: ls -l java lrwxr-xr-x  1 root  wheel  74  ...