什么是换码符(escape character)?
换码符是用来执行一个命令或一项任务的字符,它们不会被打印到屏幕上。例如,一个换码符可以是这样一个字符,它被传递给一个设备,告诉计算机屏幕以红色而不是通常的白色来显示下一行。这个换码符将和真正要被设备以红色来显示的字符一起被传递给设备。那么设备如何知道这个字符是一个换码符呢?一般来说,在发送换码符之前,要先发送Escape键(十进制为27,八进制为\033),这样设备就会知道下一个到达的字符是换码符。当设备接收到这个换码符后,它先执行该换码符所代表的命令,然后恢复正常操作,即接收字符并把它们打印到屏幕上。因为通常要用两个或更多个字符来表示所要求的命令(Escape键加上命令字符本身),所以通常称这些字符为换码序列。
这听起来有些混乱(Escape键后面跟着换码符),但这也正是这些字符之所以被叫做换码符的原因。Escape键用来通知字符的接收者下一个字符是换码符,而不是普通的字符。换码符本身可以是任何字符,甚至可以是另一个Escape键。具体用什么字符来代表所要求的命令,由读入这些字符并等待相应命令的程序来决定。
这方面的一个例子是ANSI.SYS设备驱动程序,该程序由CONFIG.SYS文件装入,它会拦截所有送往屏幕的字符,并按换码序列的要求处理这些字符。ANSI.SYS的作用是提供一种方法来打印彩色的、带下划线的或闪烁的文本,或者执行象清屏这样的高级命令。ANSI.SYS的优点在于你不必知道你使用的是哪种显示器或显示卡,因为ANSI.SYS会替你处理这个问题。你只需在要送往屏幕的字符串中的合适位置加入换码符,ANSI.SYS会替你处理其余的事情。例如,如果你输入了“\033H4Hello there,”ANSI.SYS就会在屏幕上打印出红色的“Hello there”——它将发现Escape键(\033),读入命令(在这里是H4,即以红色打印其余的字符),然后打印其余的字符("Hello there")。
在ANSI.SYS之前,换码符被用在老式的集中化计算机环境(一个主机连接着很多哑终端)中。在那个时代,终端自身没有计算能力,不能显示图形,而且大部分都是单色的,不能显示彩色。但是,每台显示器都有一套由主机发送给显示器的换码符,用来指示显示器做清屏、加下划线或闪烁这样一些事情。与使用ANSI.SYS一样,只要程序员在发送给显示器的字符串中加入换码符,显示器就会执行相应的命令。
今天,这种类型的换码序列已经不再使用了。然而,当时还有许多其它类型的被定义为换码符的字符序列,它们一直被延用至今,并且仍然在被广泛使用。例如,在介绍如何把一个八进制值或十六进制值赋给一个变量的问题中,笔者就使用了一种换码符(在十六进制中使用“Ox”,在八进制中使用“\”)。注意,这些字符并没有用Escape键来作特殊标识,但它们的确被用来表示其后的字符有某种特殊性。实际上,反斜杠(\)经常被当作一个换码符来使用。例如,在c语言中,你可以用“\n”来通知计算机“执行一次换行操作”,或者用“\t”来执行前进一个tab符的操作,等等。
这听起来有些混乱(Escape键后面跟着换码符),但这也正是这些字符之所以被叫做换码符的原因。Escape键用来通知字符的接收者下一个字符是换码符,而不是普通的字符。换码符本身可以是任何字符,甚至可以是另一个Escape键。具体用什么字符来代表所要求的命令,由读入这些字符并等待相应命令的程序来决定。
这方面的一个例子是ANSI.SYS设备驱动程序,该程序由CONFIG.SYS文件装入,它会拦截所有送往屏幕的字符,并按换码序列的要求处理这些字符。ANSI.SYS的作用是提供一种方法来打印彩色的、带下划线的或闪烁的文本,或者执行象清屏这样的高级命令。ANSI.SYS的优点在于你不必知道你使用的是哪种显示器或显示卡,因为ANSI.SYS会替你处理这个问题。你只需在要送往屏幕的字符串中的合适位置加入换码符,ANSI.SYS会替你处理其余的事情。例如,如果你输入了“\033H4Hello there,”ANSI.SYS就会在屏幕上打印出红色的“Hello there”——它将发现Escape键(\033),读入命令(在这里是H4,即以红色打印其余的字符),然后打印其余的字符("Hello there")。
在ANSI.SYS之前,换码符被用在老式的集中化计算机环境(一个主机连接着很多哑终端)中。在那个时代,终端自身没有计算能力,不能显示图形,而且大部分都是单色的,不能显示彩色。但是,每台显示器都有一套由主机发送给显示器的换码符,用来指示显示器做清屏、加下划线或闪烁这样一些事情。与使用ANSI.SYS一样,只要程序员在发送给显示器的字符串中加入换码符,显示器就会执行相应的命令。
今天,这种类型的换码序列已经不再使用了。然而,当时还有许多其它类型的被定义为换码符的字符序列,它们一直被延用至今,并且仍然在被广泛使用。例如,在介绍如何把一个八进制值或十六进制值赋给一个变量的问题中,笔者就使用了一种换码符(在十六进制中使用“Ox”,在八进制中使用“\”)。注意,这些字符并没有用Escape键来作特殊标识,但它们的确被用来表示其后的字符有某种特殊性。实际上,反斜杠(\)经常被当作一个换码符来使用。例如,在c语言中,你可以用“\n”来通知计算机“执行一次换行操作”,或者用“\t”来执行前进一个tab符的操作,等等。