替代字符

替代字符(英語:substitute character,␚)是一个控制字符,它被用于替代识别为无效、错误或不能在指定设备上表示的字符。它也被一些编程语言用于转义序列

ASCIIUnicode字符编码中,该字符的编码为第26号(十六进制 1A)。标准键盘下,同时按下Ctrl + Z键将发送此代码(Ctrl+Z通常表示为^Z)。[1]当使用Unicode进行编码时,输出会兼容该字符时,但是推荐使用 replacement character (�, U+FFFD) 进行代替,以达到解码时显示该字符的目的。

使用

文件末尾

CP/M 1和2(以及MP/M英语MP/M的衍生品)上,EOF必须被显式标记,因为CP/M文件系统本身不记录文件大小,并且文件放在固定大小的记录空间上,而每个文件的结尾通常都会留下一些已分配但未使用的空间。[2][3]在CP/M上这会使用十六进制1A字符填充。CP/M 3及更高版本(以及如Concurrent CP/M英语Concurrent CP/MConcurrent DOS英语Concurrent DOSDOS Plus英语DOS Plus等衍生品)所使用的扩展CP/M文件系统支持字节粒度文件,[4][5]所以这不再是一个强制要求,而是一个纯粹的惯例,以确保向后兼容性。

CP/M86-DOSMS-DOSPC DOSDR-DOS及它们的各种衍生品中,字符26也用于指示字符流的结束,从而用于终止交互式用户输入命令行窗口(以及经常用于完成控制台输入重定向,例如COPY CON: TYPEDTXT.TXT所要求的输入)。

尽管在技术上不再需要指示文件的结束,但许多文本编辑器和程序语言直到现在仍支持该约定,或者可以被配置为在编辑时将该字符插入到文件末尾,或者至少适当地处理它们的文件。在这种情况下,它通常被称之为“软”EOF,因为它不一定表示文件的物理性结束,更多是“之后没有有用数据”的一种标记。因此事实上,在该字符后可能仍存有有用的数据,直至它在文件系统上的终止点。因而,它也可以被用来隐藏文件的内容,在文件输入到控制台或某些编辑器时。许多文件格式标准(例如PNGGIF)在其标题段中包含字符26以精确完成功能。一些现代的文本文件格式(例如CSV-1203[6])仍推荐插入EOF字符作为文件的最后一个字符。但是,在MS-DOS微软Windows中输入Control+Z并不会嵌入一个EOF字符,系统API也不使用该字符来表示文件的实际结尾。

一些编程语言(例如Visual Basic)在使用内置的文件读取方式时不会读取软EOF之后的内容,因此若需要则必须使用替代方法,例如将文件打开为二进制模式,或者使用“文件系统对象”操作它。

字符26被用于标记“文件结束”,即使ASCII将它称为“替代”(Substitute),并且有其他字符完成此目的。被称为“文件分隔符英语File Separator”的字符28也被用于类似的目的

Control+Z

Control+Z(Unix)

Unix操作系统中,Control+Z用于挂起 当前正在执行的交互进程(放置于后台并使之停止)。[7][8]

挂起的进程之后可以通过前台(交互式)模式恢复,即输入命令(fg),或者以后台模式继续执行,即输入命令(bg),或者被终止英语Exit (operating system)。当一个用户在終端上输入时,当前运行的前台进程发送一个“终端终止”(SIGTSTP英语SIGTSTP)信号,这通常就导致进程被挂起而暂停执行。

Control+Z(其他)

在许多用户图形界面和应用程序中,Control+Z(Mac OS上为⌘ Command+Z)可以用来撤销英语Undo上一次操作。同时,许多应用程序也支持按下多次Control+Z来撤销多次操作。Control+ZXerox PARC选择的一列用来控制文本编辑键盘序列。选择这些特定的按键英语Keystroke很可能是因为它们在标准QWERTY鍵盤上的独特位置,Z(撤销)、X英语Control-X(剪切)、C英语Control-C(复制)、V英语Control-V(粘贴)键都在标准QWERTY鍵盤的左下区域。

更多可参考词条:快捷键

其他

Unicode安全注意事项页面存档备份,存于互联网档案馆(英文)建议将此字符作为字符集转换期间不可映射字符的安全替代品。

表示法

  • ASCIIUnicode以如下形式表示它:
    八进制码:32
    十进制码:26
    十六进制码:1A、U+001A
    助记符号:SUB
    二进制值:11010

参考资料

  1. ^ Keyboard shortcuts for Windows. Microsoft Support. Microsoft. [2 June 2012]. (原始内容存档于2015-03-10). 
  2. ^ John Elliott (1998).
  3. ^ John Elliott (1998).
  4. ^ John Elliott (1998).
  5. ^ John Elliott (1998).
  6. ^ CSV-1203 format specification Portuguese Web Archive的存檔,存档日期2016-05-16
  7. ^ Other Key combinations. linux.die.net. [2020-01-14]. (原始内容存档于2015-07-23). 
  8. ^ Quick Reference: Unix Commands. IT Connect. University of Washington. [2 June 2012]. (原始内容存档于2020-11-06). 

参见