不同系统下的回车\r和换行\n,及其历史

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

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

Windows\r\n0D0A
Linux/Unix\n0A
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缩写含义
\n0A10^JLFLineFeed(换行,Newline)
\r0D13^MCRCarriage Return(回车)

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


 

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

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

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

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

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

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

箭头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   \n这2者在其默认文本编辑器gedit下仍能显示正常!!

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

3.MAC OS X 10.7

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

 

可看到回车的确是\n

 


 

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



转载于:https://my.oschina.net/goopand/blog/487149

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值