在Windows上换行是2个字节的原因是什么?是不是只有ASCII中的一个字节?
答案 0 :(得分:10)
历史上,换行符由两个字符组成:U + 000D回车(我在这里使用Unicode因为我们现在使用的是 - 那时它本来就是ASCII或者甚至可能不是这样)和U + 000A新线。这两个是必要的,因为一个将进一步推进打印头一行,而另一个将它返回到下一行的开头。相比之下,在打字机上转动纸卷(电传打字机不是其他任何东西,实际上,只是连接到计算机)并向右移动托架,右边的杠杆为你做了。
顺便说一句,大多数网络协议都保留了CR + LF序列,所以在某种程度上它的Unix就是奇怪的。当电话类型不再存在并被视频终端取代,后来由终端仿真器取代时,对于双字符序列不再有物理需求。此外,它还会在代码中检查换行符,因为您总是需要比较两个字节。因此决定(Multics和更高版本)Unix只保留一个可以简化许多事情的字符。后来指定C在文本模式下读取或写入流时,在U + 000A和平台原生换行序列之间执行转换。
另一方面,Windows通过CP / M和DOS继承了CR + LF,并且他们应该更改该默认值没有任何有用的理由。对于微软来说,向后兼容性始终是一个强项,他们在过去的某个时刻也不可能打破这一点(对于一些非常愤怒的客户,我敢打赌)。 Mac OS(旧版)是另一个奇怪的选择,只使用CR进行换行。