[读书笔记]ASCII字符的兼容性

来源:互联网 发布:中国软件评测 编辑:程序博客网 时间:2024/04/30 15:30

书籍名称:程卓越之道 第一卷:深入理解计算机 作者:Randall Hyde 译者:韩东海

原文摘录(P106-P107):

尽管ASCII是标准,但数据使用ASCII字符编码并不能保证在各个系统之间的兼容性。虽然确实一台机器上的A到了另外一个系统中很有可能还是A,但是对于控制字符的使用的标准化就很少。事实上,在ASCII码的第一组32个控制码以及最后一组的删除码中,只有4个控制码被大多数设备与应用所支持——退格(BS),制表符,回车(CR)以及换行(LF)。更糟的是,不同的机器通常会以不同的方式来使用这些“被支持”的控制码。行尾就是一个尤其麻烦的例子。Windows,MS-DOS,CP/M以及其他一些系统使用两字符序列CR/LF来标记行尾。而苹果Macintosh以及其他很多系统都使用单一的CR字符来标记行尾,Linux,BeOS以及其他各种Unxi系统使用单一的LF字符来标记行尾。

在这些不同的系统之间交换简单的文本文件都有可能会是一个让人郁闷的体验。即使你在这些系统上的所有文件中都使用标准的ASCII字符,在交换文件的时候还是需要转换数据。幸运的是,这种转换相当简单,而且很多文本编辑器都会自动处理具有不同行尾的文件(还有一些免费软件可以帮助你进行这种转换)。即使你不得不在自己的软件中进行处理,这种转换需要做的也不过是将一个文件中除了行尾序列之外的所有字符复制到另一个文件中,并且在碰到输入文件中的旧的行尾序列的时候输出一个新的行尾序列。

感想:

恰好前一阵开始学习Linux内核,在Windows里看Linux内核源代码的时候,如果用记事本(如果用Source Insight则不会出现后面的情况,后经测试,VC6.0、MDK、UltraEdit打开也正常)打开其源文件,会发现该换行的地方并没有换行,而是仅有几个“空格”隔开,当时还觉得很奇怪,但是也没有深究。直到看到这段话我才恍然大悟,并且认识到ASCII字符(尤其是控制字符)在各个系统中的兼容性问题。下面是用记事本打开一个Linux内核某C文件的情况。

原创粉丝点击