控制字符

✍ dations ◷ 2025-04-26 01:28:22 #计算机技术,计算机编程,字符集

控制字符,是出现在特定的信息文本中,表示某一控制功能的字符。

在计算中,一个控制字符或非打印字符,是一个码位(一个数字)是否在字符集,其自身也是书写字母来描述的。所有输出在32以下的ASCII表都是这个类型,包括

在ASCII中常用的控制字符包括

人们有时会遇到其他代码的现代用法,如用编码4(传输结束)结束Unix shell会话或PostScript打印机的传输。

编码27(转义)值得详细描述。尽管很多控制字符是从不使用的,将设备控制信息和可打印字符混合传送的概念却非常有用,这使设备制造商得以创建一种可用来传送上百条设备指令的途径。具体来说是使用称为控制序列或转义序列的一种由多个字符构成的序列。

典型的方式是首先发送编码27提醒设备将后续字符解释为控制序列而非普通的打印文本,之后跟随一个或多个字符指出某个具体的操作,这之后设备会返回到正常解释字符的状态(即不再将后续字符解释为控制序列)。例如由编码27后跟随可打印的字符“[2;10H”组成的序列会使一个DEC Digital VT-102终端将光标移动到屏幕第2行的第10个位置。这些序列存在着一些标准,广知的是基于VT-100系列终端的行为的ANSI X3.64(1979),但在应用中存在大量非标准的变化,特别是在技术进步的速度大大超过任何标准所能追赶的速度的打印机工业领域中。

基于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)用于选择替换的字符集、字体、下划线或其他打印模式,然而更常见的是使用其他的转义序列来实现这些目的。

随着不使用纸张打印、并在字符放置、删除等方面提供了更多灵活性的终端机的出现,打印控制码也进一步适应了这些变化。例如馈页表示清除屏幕而非馈送下一张白纸。人们设计了更复杂的转义序列来应用新终端和新打印机功能的优点。单个字符的控制码已经不够用来支持新外围设备的所有功能了,控制字符和转义序列之间的差别也开始变得模糊。

分隔符(组、记录等)用于将数据结构化,通常用于磁带,为的是模拟穿孔卡片。介质结束(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字符。纸带很快被废弃了,因此这个特色也几乎不用了。

然而由于其编码处于其他可打印的字符占用的区域中,许多计算机把它作为一个额外的可打印字符来使用(通常是一个实心的黑色方块字符,可用叠打来盖除文字)。

七位ASCII定义了33个代码作为控制字符,它们是0到31、以及127,(位于0x00-0x1F及0x7F)。

兼容的八位ISO/IEC 8859-1加上了从ISO/IEC 6429定义的从128到159的32个代码,位于0x80-0x9F。

相关

  • 生物活性化合物植物化学(英语:Phytochemistry)严格地来说是对植物化学成分的研究。这些化合物取自植物。在更狭义的层面上,这个术语常被用于描述存在于植物中的大量的多种次级代谢化合物(次级
  • Azithromycin11–14 h (single dose) 68 h (multiple dosing)阿奇霉素(Azithromycin, /əˌzɪθroʊˈmaɪsᵻn/ )是一种属于大环内酯的抗生素,于1980年被发现,1981年推出。又翻译作阿红霉
  • 连弩连弩是一种古代的远射武器,改进自弩,共分两种。一种是能把箭连续不断射向敌人的连发式;另一种是能同时发射多支箭的多发式。连弩最早出自战国时代,而在西汉连弩已用于实战。属于
  • 张 钹张钹(1935年3月26日-),福建福清人,中国科学院院士,中国人工智能领域奠基人之一。主要从事人工智能、人工神经网络、遗传算法、分形和小波理论等研究。现任清华大学信息学院学术委
  • 萨帕尔穆拉特·阿塔耶维奇·尼亚佐夫萨帕尔穆拉特·阿塔耶维奇·尼亚佐夫(土库曼语:Saparmyrat Ataýewiç Nyýazow;俄语:Сапармура́т Ата́евич Ния́зов;1940年2月19日-2006年12月21日)是
  • 汽化汽化是指物质状态从液体向气体转换的一种相变,过程进行中需要吸热。汽化有两种形式,蒸发、沸腾。蒸发是只在液体表面发生,并且液体温度低于某一压力时的沸点。而沸腾是一种剧烈
  • 批准批准为一国表示其同意接受条约拘束之方式之一。按维也纳条约法公约第14条规定:“遇有下列情形之一,一国承受条约拘束之同意,以批准表示之: (甲)条约规定以批准方式表示同意;(乙
  • 异氰酸异氰酸分子式HNCO,为氰酸的互变异构体。异氰酸可以通过C3H3N3O3 → 3 HNCO由三聚氰酸制取。加入水时,通过HNCO + H2O → CO2 + NH3分解为CO2及NH3。
  • 朱莉·帕耶特朱莉·帕耶特(法语:Julie Payette,1963年10月20日-),加拿大航天员和政治家,第29任加拿大总督。帕耶特1963年出生于加拿大蒙特利尔,幼时受阿波罗登月的影响梦想成为航天员。16岁时,帕
  • 小林正树小林正树(1916年2月24日-1996年10月4日)是一位日本电影导演,出生于北海道,与黑泽明、木下惠介、市川崑并称为四骑士。就读早稻田大学文学部哲学科东洋美术专攻,曾师从会津八一。19