一、ASCII码
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)最初的设计是一个7位的字符编码,使用了从0到127的数字来表示字符。这意味着它总共可以表示128个不同的字符。这包括了英文大小写字母、数字、一些标点符号以及一些控制字符(如换行、回车等)。
后来,随着计算机技术的发展和对更多字符集的需求增长,ASCII码被扩展到了8位(1个字节)。这个扩展后的版本通常称为扩展ASCII或高ASCII,并且它允许包含额外的128个字符,从而总共可以表示256个字符。这些额外的字符集通常用来表示其他符号、控制代码,以及其他语言的特殊字符。
ASCII 字符集中的数字0到31以及数字127对应的是控制字符(control characters),也被称为非打印字符(non-printing characters)。它们不代表可视化的字符,而是用来控制文本的传输和显示行为。以下是一些常见控制字符的描述:
0
(NUL
): 空字符 (Null character),经常用于标记字符串的结束。1
(SOH
): 标题开始 (Start of Header),用于通信协议中的消息开始。2
(STX
): 正文开始 (Start of Text),标记文本实际内容的开始。3
(ETX
): 正文结束 (End of Text),通常标记传输结束。4
(EOT
): 传输结束 (End of Transmission),用于终止一个传输序列。5
(ENQ
): 询问字符 (Enquiry),用于请求远端发送响应。6
(ACK
): 确认字符 (Acknowledge),是对接收数据成功的响应。7
(BEL
): 响铃 (Bell),当解释此字符时会发出声音或视觉信号。8
(BS
): 退格 (Backspace),使光标向左移动一位。9
(HT
): 水平制表符 (Horizontal Tab),用于控制文本的横向间隔。10
(LF
): 换行 (Line Feed),在Unix和Unix-like系统中用于开始新的一行。11
(VT
): 垂直制表符 (Vertical Tab),用于控制文本的纵向间隔。12
(FF
): 走纸换页 (Form Feed),在打印机中用来将纸张推进到下一页的位置。13
(CR
): 回车 (Carriage Return),在Mac OS之前和Windows系统中用于返回行首,并在Windows中与LF
一起组合使用来开始新的一行。14
(SO
): 移位输出 (Shift Out),用于临时切换到另一套字符集。15
(SI
): 移位输入 (Shift In),用于返回标准字符集。16
到31
: 其他控制功能,包括文件分隔、组分隔、记录分隔等。127
(DEL
): 删除 (Delete),用于删除前一个字符,通常是逻辑删除而非物理删除。
这些控制字符在现代文本编辑和显示中通常不经常直接使用,但在通信协议、文件格式和程序语言中仍发挥作用。例如,LF
和 CR
在不同操作系统中的文本文件中作为换行的标记。而 NUL
字符经常用在某些编程语言中表示字符串的终止。
下面是ASCII码的详细对比表格,蓝色的是控制字符,没有填充色彩的是可显示字符。
二、ANSI转义序列
ANSI是(American National Standards Institute)的缩写。控制字符的数量限制使得它们不足以满足控制现代终端设备的所有需求,特别是在文本格式化和复杂的界面控制方面。为了解决这个问题,引入了转义序列这一概念,它允许使用更复杂的指令来控制终端的行为。
大部分情况下,ANSI转义序列都是以 ESC 开头的,所以是(ANSI escape codes)或者(ANSI escape sequences)。
1、ANSI转义序列C0列表:
这些是控制字符,用于文本处理中的特殊功能,如回车(CR)、换行(LF)等。这些字符的代码通常在ASCII的0x00到0x1F范围内。
也就是上面的表格的控制字符:
2、ANSI转义序列C1列表
C1控制字符用于扩展的文本控制目的,比如开始定向控制(SDC)或单字符强调(SCI)。这些字符的代码范围通常是0x80到0x9F。
序列符号 | 码值 | 名称 | 作用 |
---|---|---|---|
ESC N | 0x8e | SS2-Single Shift Two | 用来从替代字符集中选择字符。在兼容ANSI的系统中,SS2通常用来临时切换到G2字符集,以访问特殊字符。 |
ESC O | 0x8f | SS3-Single Shift Three | 用来从替代字符集中选择字符。在兼容ANSI的系统中,SS3用于临时切换到G3字符集。 |
ESC P | 0x90 | DCS-Device Control String | 用于传输设备控制信息,这些信息被设备或终端用来执行特定的硬件控制功能,例如,xterm中可能用来定义键位映射或请求设置。 |
ESC [ | 0x9b | CSI-Control Sequence Introducer | 用于引入一系列控制序列,它结束于ASCII 64到126之间的字符。此序列用于多种光标和显示控制操作。 |
ESC \ | 0x9c | ST-String Terminator | 终止一个控制字符串,如APC、DCS、OSC、PM和SOS这样的序列。 |