我的理解是,在0x00到0x1f范围内找到的ASCII字符包含在Teletype机器中。在现代,它们中的许多已经过时了。我很好奇在传统的字符串或文件中仍然可以找到哪些字符。根据我在C编程的经验,我认为那些可能是NUL,LF,TAB,也许是EOT。我特别好奇BS和ESC,因为我认为(类似于移位或控制可能)那些可能由操作系统处理并且从未真正打印或包含在字符串中。任何数量的见解将不胜感激!
答案 0 :(得分:1)
在十六进制00和1F之间的字符中,您经常遇到的唯一字符是NUL(0x00 = \0
),TAB(0x09 = \t
),CR(0x0D = \r
),和LF(0x0A = \n
)。其中,NUL在C语言中用作字符串终止符,TAB用作制表符,CR和LF用在行尾。 (使用哪一个是一个复杂的情况;有关详细信息,请参阅维基百科文章Newline,包括其历史记录。)
与VT100兼容的终端仿真器通信时使用以下附加字符,但很少在该上下文之外找到:
0x07 = \a
),会导致终端发出哔声和/或闪烁。0x08 = \b
),用于将光标向左移动一个位置。 (按退格键时不发送;见下文!)0x0E
和0x0F
),用于切换到某些特殊字符集。0x1B = \e
),按Escape键和各种其他功能键时发送,另外用于引入控制终端的转义序列。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字符串的函数。”
所有最好的希望这有帮助。