什麼是換碼符(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符的操作,等等

發佈了48 篇原創文章 · 獲贊 9 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章