替代字符(英語:substitute character,␚)是一个控制字符,它被用于替代识别为无效、错误或不能在指定设备上表示的字符。它也被一些编程语言用于转义序列。
在ASCII和Unicode字符编码中,该字符的编码为第26号(十六进制 1A)。标准键盘下,同时按下Ctrl + Z键将发送此代码(Ctrl+Z通常表示为^Z)。[1]当使用Unicode进行编码时,输出会兼容该字符时,但是推荐使用 replacement character (�, U+FFFD) 进行代替,以达到解码时显示该字符的目的。
使用
文件末尾
在CP/M 1和2(以及MP/M的衍生品)上,EOF必须被显式标记,因为CP/M文件系统本身不记录文件大小,并且文件放在固定大小的记录空间上,而每个文件的结尾通常都会留下一些已分配但未使用的空间。[2][3]在CP/M上这会使用十六进制的1A字符填充。CP/M 3及更高版本(以及如Concurrent CP/M、Concurrent DOS和DOS Plus等衍生品)所使用的扩展CP/M文件系统支持字节粒度文件,[4][5]所以这不再是一个强制要求,而是一个纯粹的惯例,以确保向后兼容性。
在CP/M、86-DOS、MS-DOS、PC DOS、DR-DOS及它们的各种衍生品中,字符26也用于指示字符流的结束,从而用于终止交互式用户输入命令行窗口(以及经常用于完成控制台输入重定向,例如COPY CON: TYPEDTXT.TXT所要求的输入)。
尽管在技术上不再需要指示文件的结束,但许多文本编辑器和程序语言直到现在仍支持该约定,或者可以被配置为在编辑时将该字符插入到文件末尾,或者至少适当地处理它们的文件。在这种情况下,它通常被称之为“软”EOF,因为它不一定表示文件的物理性结束,更多是“之后没有有用数据”的一种标记。因此事实上,在该字符后可能仍存有有用的数据,直至它在文件系统上的终止点。因而,它也可以被用来隐藏文件的内容,在文件输入到控制台或某些编辑器时。许多文件格式标准(例如PNG和GIF)在其标题段中包含字符26以精确完成功能。一些现代的文本文件格式(例如CSV-1203[6])仍推荐插入EOF字符作为文件的最后一个字符。但是,在MS-DOS和微软Windows中输入Control+Z并不会嵌入一个EOF字符,系统API也不使用该字符来表示文件的实际结尾。
一些编程语言(例如Visual Basic)在使用内置的文件读取方式时不会读取软EOF之后的内容,因此若需要则必须使用替代方法,例如将文件打开为二进制模式,或者使用“文件系统对象”操作它。
字符26被用于标记“文件结束”,即使ASCII将它称为“替代”(Substitute),并且有其他字符完成此目的。被称为“文件分隔符”的字符28也被用于类似的目的
Control+Z
Control+Z(Unix)
在Unix操作系统中,Control+Z用于挂起 当前正在执行的交互进程(放置于后台并使之停止)。[7][8]
挂起的进程之后可以通过前台(交互式)模式恢复,即输入命令(fg
),或者以后台模式继续执行,即输入命令(bg
),或者被终止。当一个用户在終端上输入时,当前运行的前台进程发送一个“终端终止”(SIGTSTP)信号,这通常就导致进程被挂起而暂停执行。
Control+Z(其他)
在许多用户图形界面和应用程序中,Control+Z(Mac OS上为⌘ Command+Z)可以用来撤销上一次操作。同时,许多应用程序也支持按下多次Control+Z来撤销多次操作。Control+Z是Xerox PARC选择的一列用来控制文本编辑的键盘序列。选择这些特定的按键很可能是因为它们在标准QWERTY鍵盤上的独特位置,Z(撤销)、X(剪切)、C(复制)、V(粘贴)键都在标准QWERTY鍵盤的左下区域。
更多可参考词条:快捷键
其他
Unicode安全注意事项 (页面存档备份,存于互联网档案馆)(英文)建议将此字符作为字符集转换期间不可映射字符的安全替代品。
表示法
- ASCII和Unicode以如下形式表示它:
- 八进制码:32
- 十进制码:26
- 十六进制码:1A、U+001A
- 助记符号:SUB
- 二进制值:11010
参考资料
参见