【问题标题】:Why is a newline 2 bytes in Windows?为什么 Windows 中的换行符是 2 个字节?
【发布时间】:2013-02-23 18:34:03
【问题描述】:

Windows 上换行符是 2 个字节的原因是什么? \n 不就是 ASCII 的一个字节吗?

【问题讨论】:

标签: windows byte newline


【解决方案1】:

从历史上看,换行符由两个字符组成:U+000D 回车(我在这里使用 Unicode,因为这是我们现在使用的 - 那时它可能是 ASCII 或者甚至可能不是那个)和 U+000A 换行.这两个是必要的,因为一个会将打印头向前推进一行,而另一个会将其返回到下一行的开头。将其比作在打字机上转动纸卷(实际上,电传打字机没有别的,只是连接到计算机)并将托架向后移动,右侧的杠杆为您完成了这两项工作。

顺便说一句,大多数网络协议都保留了 CR+LF 序列,所以在某种程度上,这里的怪事是 Unix。当电传打字机不复存在并被视频终端和后来的终端仿真器取代时,两个字符序列不再需要物理。此外,它还使检查代码中的换行变得困难,因为您总是必须比较两个字节。因此,决定(Multics 和更高版本的)Unix 只保留一个字符,这将简化许多事情。 C 后来被指定在以文本模式读取或写入流时执行 U+000A 和平台原生换行序列之间的转换。

另一方面,Windows 通过 CP/M 和 DOS 继承了 CR+LF,没有任何有用的理由让他们更改该默认值。向后兼容性一直是微软的强项,他们不能在过去的某个时候打破这一点(我敢打赌,这会让一些非常愤怒的客户感到愤怒)。

Mac OS(旧的)是另一个奇怪的东西,只使用 CR 换行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2011-12-04
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多