哪些ASCII字符已过时?

时间:2016-05-25 23:59:00

标签: text character-encoding ascii

我的理解是,在0x00到0x1f范围内找到的ASCII字符包含在Teletype机器中。在现代,它们中的许多已经过时了。我很好奇在传统的字符串或文件中仍然可以找到哪些字符。根据我在C编程的经验,我认为那些可能是NUL,LF,TAB,也许是EOT。我特别好奇BS和ESC,因为我认为(类似于移位或控制可能)那些可能由操作系统处理并且从未真正打印或包含在字符串中。任何数量的见解将不胜感激!

表格供参考: enter image description here

2 个答案:

答案 0 :(得分:1)

在十六进制00和1F之间的字符中,您经常遇到的唯一字符是NUL(0x00 = \0),TAB(0x09 = \t),CR(0x0D = \r),和LF(0x0A = \n)。其中,NUL在C语言中用作字符串终止符,TAB用作制表符,CR和LF用在行尾。 (使用哪一个是一个复杂的情况;有关详细信息,请参阅维基百科文章Newline,包括其历史记录。)

与VT100兼容的终端仿真器通信时使用以下附加字符,但很少在该上下文之外找到:

  • BEL(0x07 = \a),会导致终端发出哔声和/或闪烁。
  • BS(0x08 = \b),用于将光标向左移动一个位置。 (按退格键时发送;见下文!)
  • SO和SI(0x0E0x0F),用于切换到某些特殊字符集。
  • ESC(0x1B = \e),按Escape键和各种其他功能键时发送,另外用于引入控制终端的转义序列。
  • DEL(0x7F),按退格键时发送。

其余的非打印ASCII字符基本上未使用。

答案 1 :(得分:0)

  

“退格构图不再适用于典型的现代数字显示器或排版系统”Ref Backspace

这是stackoverflow - The backspace escape character in c unexpected behavior

参考Unicode

  

Unicode和ISO / IEC 10646通用字符集(UCS)具有更广泛的字符阵列,并且它们的各种编码形式已经开始在许多环境中快速取代ISO / IEC 8859和ASCII。虽然ASCII限制为128个字符,但Unicode和UCS通过将唯一标识(使用称为代码点的自然数字)和编码(分为8位,16位或32位二进制格式,称为UTF-8)的概念分离来支持更多字符。 ,UTF-16和UTF-32)。

为了允许向后兼容,128 ASCII和256 ISO-8859-1(拉丁语1)字符被分配Unicode / UCS代码点,这些代码点与之前的代码相同标准即可。 因此,对于Unicode / UCS的一个非常小的子集,ASCII可以被认为是7位编码方案,而ASCII(当前缀为0作为第8位时)是有效的UTF-8。

这是使用退格stackoverflow what is the purpose of unicode backspace u0008

的另一个unicode

以下是stackoverflow c programming how to program for unicode和UTF-8

的概述

最后继承人(FSF.org)GNU实施GNU libunistring manual

  

“此库提供了根据Unicode标准操作Unicode字符串和操作C字符串的函数。”

所有最好的希望这有帮助。