-
控制字符
鎖定
控制字符(Control Character),是出現於特定的信息文本中,表示某一控制功能的字符。
- 中文名
- 控制字符
- 外文名
- Control Character
- 定 義
- 表示某一控制功能的字符
- 類 型
- 控制功能的字符
控制字符相關信息
控制字符(Control Character),出現於特定的信息文本中,表示某一控制功能的字符。
在計算中,一個控制字符或非打印字符,是一個代碼標示(一個數字)是否在字符集,其自身也是書寫字母來描述的。所有輸出在32以下的ASCII表都是這個類型,包括
- BEL(要求有聲信號來響應終端的接收);
- SYN(同步信號);
- ENQ(要求接收後發出響應來驗證存在);
控制字符ASCII中
控制字符基本信息
在ASCII碼中,第0~31號及第127號(共33個)是控制字符或通訊專用字符,如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BS(退格)、BEL(振鈴)等;通訊專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等。
控制字符其他信息
Seq | 十六進 | 縮寫 | 字符名 | |
---|---|---|---|---|
00 | 0x00 | NUL | Null (空) | |
^A | 01 | 0x01 | SOH | Start of Heading (報頭開始) |
^B | 02 | 0x02 | STX | Start of Text (正文開始) |
^C | 03 | 0x03 | ETX | End of Text (正文結束) |
^D | 04 | 0x04 | EOT | End of Transmission (傳輸結束) |
^E | 05 | 0x05 | ENQ | Enquiry (查詢) |
^F | 06 | 0x06 | ACK | Acknowledge (確認) |
^G | 07 | 0x07 | BEL | Bell (振鈴) |
^H | 08 | 0x08 | BS | Backspace (退格) |
^I | 09 | 0x09 | HT | Horizontal Tab (水平製表) |
^J | 10 | 0x0A | LF | Line Feed (換行) |
^K | 11 | 0x0B | VT | Vertical Tab (垂直製表) |
^L | 12 | 0x0C | FF | Form Feed (換頁) |
^M | 13 | 0x0D | CR | Carriage Return (回車) |
^N | 14 | 0x0E | SO | Shift Out (移出) |
^O | 15 | 0x0F | SI | Shift In (移入) |
^P | 16 | 0x10 | DLE | Data Link Escape (數據鏈路轉義) |
^Q | 17 | 0x11 | DC1 | Device Control 1 (設備控制1) |
^R | 18 | 0x12 | DC2 | Device Control 2 (設備控制2) |
^S | 19 | 0x13 | DC3 | Device Control 3 (設備控制3) |
^T | 20 | 0x14 | DC4 | Device Control 4 (設備控制4) |
^U | 21 | 0x15 | NAK | Negative Acknowledge (否認) |
^V | 22 | 0x16 | SYN | Synchronous Idle (同步空閒) |
^W | 23 | 0x17 | ETB | End of Transmission Block (傳輸塊結束) |
^X | 24 | 0x18 | CAN | Cancel (取消) |
^Y | 25 | 0x19 | EM | End of Medium (介質結束) |
^Z | 26 | 0x1A | SUB | Substitute (替換) |
^[ | 27 | 0x1B | ESC | Escape (轉義) |
^\ | 28 | 0x1C | FS | File Separator (文件分隔符) |
^] | 29 | 0x1D | GS | Group Separator (分組符) |
^^ | 30 | 0x1E | RS | Record Separator (記錄分隔符) |
^_ | 31 | 0x1F | US | Unit Separator (單元分隔符) |
127 | 0x7F | DEL | Delete (刪除) |
兼容的八位ISO/IEC 8859-1加上了從ISO/IEC 6429定義的從128到159的32個代碼,位於0x80-0x9F。
十六進 | 縮寫 | 字符名 | |
---|---|---|---|
128 | 0x80 | PAD | Padding Character(填充字符) |
129 | 0x81 | HOP | High Octet Preset(高字節前置) |
130 | 0x82 | BPH | Break Permitted Here(此處允許中斷) |
131 | 0x83 | NBH | No Break Here(此處禁止中斷) |
132 | 0x84 | IND | Index(索引) |
133 | 0x85 | NEL | Next Line(下一行) |
134 | 0x86 | SSA | Start of Selected Area(選擇區域開始) |
135 | 0x87 | ESA | End of Selected Area(選擇區域結束) |
136 | 0x88 | HTS | Horizontal Tab Set(水平製表設置) |
137 | 0x89 | HTJ | Horizontal Tab Justified(水平製表調整) |
138 | 0x8A | VTS | Vertical Tab Set(垂直製表設置) |
139 | 0x8B | PLD | Partial Line Forward(部分行前移) |
140 | 0x8C | PLU | Partial Line Backward(部分行後移) |
141 | 0x8D | RI | Reverse Line Feed(逆向饋行) |
142 | 0x8E | SS2 | Single-Shift 2 (單個移動 2) |
143 | 0x8F | SS3 | Single-Shift 3(單個移動 3) |
144 | 0x90 | DCS | Device Control String(設備控制串) |
145 | 0x91 | PU1 | Private Use 1(私用1) |
146 | 0x92 | PU2 | Private Use 2(私用2) |
147 | 0x93 | STS | Set Transmit State(發送規則設置) |
148 | 0x94 | CCH | Cancel Character(取消字符) |
149 | 0x95 | MW | Message Waiting(消息等待) |
150 | 0x96 | SPA | Start of Protected Area(保護區域開始) |
151 | 0x97 | EPA | End of Protected Area(保護區域結束) |
152 | 0x98 | SOS | Start of String(串開始) |
153 | 0x99 | SGCI | Single Graphic Char Intro(單個圖形字符描述) |
154 | 0x9A | SCI | Single Char Intro(單個字符描述) |
155 | 0x9B | CSI | Control Sequence Intro(控制順序描述) |
156 | 0x9C | ST | String Terminator(串終止) |
157 | 0x9D | OSC | OS Command(操作系統指令) |
158 | 0x9E | PM | Private Message(私訊) |
159 | 0x9F | APC | App Program Command(應用程序命令) |
控制字符鍵盤映射
基於ASCII的鍵盤上有個標為“Control”或"Ctrl"(有時也作"Cntl")的鍵,其用法非常類似於換檔鍵,即與其他字母或符號鍵一起按下。通過這種方式使用控制鍵將生成同時按下的字符鍵的的ASCII編碼字節的7位中,左起的兩個字元強制定為0;從而產生出32個ASCII控制碼之一。例如,按下CTRL和字母G(十進制編碼為71,二進制為01000111),產生編碼7(振鈴符,十進制編碼7,或二進制00000111)。
鍵盤上有些單個鍵能產生控制碼。例如標為“Backspace”的鍵通常產生編碼8,“Tab”是編碼9,“Enter”或“Return”是編碼13(有些鍵盤上“Enter”可能是編碼10)。
鍵盤上有些鍵沒有對應的ASCII字符或控制字符,例如光標控制鍵/箭頭鍵和字處理功能鍵。這些鍵盤和其所連接的計算機通過三種方法通信:將一些在其他情況下不使用的控制字符定義新的用法、使用其他一些非ASCII的編碼、或者使用由多個字符構成的控制序列。連接到獨立的個人電腦上的鍵盤通常用前兩種方法之一或兩者都用,啞終端通常是使用控制序列。
控制字符設計目的
控制字符被設計分為若干組:打印和顯示控制、數據結構化、傳輸控制、以及其他零散用途。
控制字符打印和顯示控制
打印控制字符最先用於控制作為最早的輸出設備的打印機的物理機件。回車(CR)意為將字符放置於紙邊開始打印處(可能要移動到下一行,也可能不是)。換行(LF)表示將下個字符放置於新行出現的方向上的下一行處(也可能同時要移動到行起始處,也可能不是)。垂直和水平製表(VT/HT)則請求打印機將打印頭移動到閲讀方向上的下個製表位置。換頁(FF)則開始一張新紙。退格(BS)將下個打印位置後退一個字符以便打印機可進行疊打而產生特殊字符(例如在文字下加下劃線,在早期的字符打印機上是先打出文字後再用退格符將打印頭退後,再疊打出下劃線的)。移入(SI)和移出(SO)用於選擇替換的字符集、字體、下劃線或其他打印模式,然而更常見的是使用其他的轉義序列來實現這些目的。
隨着不使用紙張打印、並在字符放置、刪除等方面提供了更多靈活性的終端機的出現,打印控制碼也進一步適應了這些變化。例如饋頁表示清除屏幕而非饋送下一張白紙。人們設計了更復雜的轉義序列來應用新終端和新打印機功能的優點。單個字符的控制碼已經不夠用來支持新外圍設備的所有功能了,控制字符和轉義序列之間的差別也開始變得模糊
[2]
。
控制字符數據結構化
分隔符(組、記錄等)用於將數據結構化,通常用於磁帶,為的是模擬穿孔卡片。介質結束(EM)意為警告磁帶(或其他介質)即將到達末尾。
控制字符傳輸控制
傳輸控制字符是設計用來將數據包結構化以及控制在傳輸發生錯誤時何時進行重傳的。
報頭開始(SOH)用於標記數據包中的非數據部分——即含有地址和其他內務數據報文的部分。正文開始(SOT)標記報頭的結束和正文的開始。正文結束(EOT)標記報文數據的結束。標準的常規是在正文結束符之前的兩個字符處填入報文的校驗和或CRC。
轉義符(ESC)用於在報文中放在一個正常情況下會被解釋為控制字符的二進制值前/*以避免該字符被作為控制字符解釋*/。例如二進制值27的正確用法是ESC ESC。
替換符(SUB)用於請求將下個可打印字符轉換為一個二進制值,通常是將第5位置零。由於一些傳輸介質(例如由打字機產生的紙張)僅能傳輸可打印的字符,因此用於這類情況時這樣做很方便。
取消符(CAN)中止一個包的傳輸。否認符(NAK)請求重新傳輸一個包。確認符(ACK)表示傳輸內容被正確地接收。
當傳輸介質使用半雙工(指某一時刻只能進行一個方向的傳輸)時,通常有一可在任意時間傳輸數據的主站和一個或多個可在獲得准許後進行傳輸的從站。主站使用查詢符(ENQ)來要求從站發送其下條報文。從站通過發出傳輸結束符(EOT)來表示其已完成了傳輸。
設備控制碼原本是不特定的,是對每種設備定義不同的。然而在數據傳輸中一種普遍的需要是當接收方不能接收更多數據時需要請求發送方立即暫停傳輸。數據設備公司發明了一套協議,其用19(DC3,也即CTRL-S或XOFF)來停止傳輸,並用17(DC1,也即CTRL-Q或XON)來開始傳輸。籍此製造商們能不必在數據纜線中用專門的傳輸控制線來控制傳輸,這節約了成本且由於減少了纜線中連接的數量也增加了作業的可靠程度。
數據鏈路轉義(DLE)告訴數據鏈路的另一端結束一個會話。/*以便對方釋放線路資源等*/
控制字符零散用途
許多ASCII控制字符是為當時使用而很少見到的設備而設計的。例如編碼22,同步空閒(SYN),原本用於同步調制解調器(其必須連續發送數據)在沒有數據要傳送時發送。(系統一般使用起始位來告知要傳送的字的開始。)
編碼0,空字符,是個特例。它在紙帶中就是那些沒有穿孔的地方,因此把它作為不存在的字符來對待是很方便的。
編碼127同樣是個特例。在二進制編碼中它的所有位都是1,這使得它可方便地用來清除作為當時普遍使用的存儲介質的紙帶中的一段,把要清除的部分全部穿孔就成了DEL字符。紙帶很快被廢棄了,因此這個特色也幾乎不用了。
- 參考資料
-
- 1. APPLEⅡ中顯示控制字符的方法 .中國知網[引用日期2017-03-21]
- 2. TURBO C中控制字符\n 和\r的使用 .中國知網[引用日期2017-03-21]
- 3. 文本中控制字符的統計與過濾 .中國知網[引用日期2017-03-21]