大多数 ASCII 控制字符是否过时?



\x20 下的大多数 ASCII 代码似乎都已完全过时。它们今天被使用吗?是否可以将它们视为"可供争夺",还是最好避免它们?

我需要一个分隔符来将"行"分组在一起,为此目的选择其中一个肯定会很好。

man ascii

Oct   Dec   Hex   Char                        
----------------------------------------------
000   0     00    NUL ''                    
001   1     01    SOH (start of heading)      
002   2     02    STX (start of text)         
003   3     03    ETX (end of text)           
004   4     04    EOT (end of transmission)   
005   5     05    ENQ (enquiry)               
006   6     06    ACK (acknowledge)           
007   7     07    BEL 'a' (bell)             
010   8     08    BS  'b' (backspace)        
011   9     09    HT  't' (horizontal tab)   
012   10    0A    LF  'n' (new line)         
013   11    0B    VT  'v' (vertical tab)     
014   12    0C    FF  'f' (form feed)        
015   13    0D    CR  'r' (carriage ret)     
016   14    0E    SO  (shift out)             
017   15    0F    SI  (shift in)              
020   16    10    DLE (data link escape)      
021   17    11    DC1 (device control 1)      
022   18    12    DC2 (device control 2)      
023   19    13    DC3 (device control 3)      
024   20    14    DC4 (device control 4)      
025   21    15    NAK (negative ack.)         
026   22    16    SYN (synchronous idle)      
027   23    17    ETB (end of trans. blk)     
030   24    18    CAN (cancel)                
031   25    19    EM  (end of medium)         
032   26    1A    SUB (substitute)            
033   27    1B    ESC (escape)                
034   28    1C    FS  (file separator)        
035   29    1D    GS  (group separator)       
036   30    1E    RS  (record separator)      
037   31    1F    US  (unit separator)        
040   32    20    SPACE                       

首先是简单的部分:在大多数现代系统中没有网络传输问题。当前的协议几乎可以将任何数据(无论是 7 位 ASCII、8 位 ASCII、Unicode 字符、图像数据还是编译的程序)作为二进制数据处理。情况并非总是如此。许多较旧的系统在传输控制代码和其他"不可打印"字符时出现问题,尤其是 8 位数据的问题。但幸运的是,那些日子已经过去了。一个很大的例外是,如果您希望能够通过HTML表单复制/粘贴数据 - 为此,您希望省略所有控制代码和其他有趣的东西。

当然,您可以根据需要制作任何格式。但是,某些字符仍然经常使用:

000   0     00    NUL '' - does "nothing" but is hard for some text editors to handle
003   3     03    ETX (end of text) - Control-C - "break" in a lot of systems
007   7     07    BEL 'a' (bell) - Still makes a bell sound.
011   9     09    HT  't' (horizontal tab) - A lot of text editors and file formats use this to set a fixed number of spaces
012   10    0A    LF  'n' (new line) - like it says
015   13    0D    CR  'r' (carriage ret) - used instead of, or together with n on many systems
021   17    11    DC1 (device control 1) - Control-Q - Resume transmission - XON
023   19    13    DC3 (device control 3) - Control-S - Pause transmission - XOFF
033   27    1B    ESC (escape) - Used for PCL and other printer control codes and plenty of other things 

其他一切都几乎可以争夺。我特别会避免 NUL 和 XON/XOFF - 它们有时很难输入到文件中 - 以及 BEL,因为使用 BEL 键入文件可能会很吵。

如果你有一个真正的二进制格式,那么你可以做任何你想做的事情。但是,如果您想拥有一种大部分人类可读的格式,那么限制控制代码是一个好主意。

ASCII 控制代码并没有过时。如今,它们不再被大量使用,因为使它们如此有用的技术不再是主流技术,而是通信技术(USB,以太网,WiFi,3G及更高级别的蜂窝等)的技术改进以及集成电路制造的改进(每平方毫米组件的增加,CPU架构的改进,组件的小型化,例如片上系统)以及协议的改进。

然而,在物联网世界中,影响这些代码设计的相同技术考虑仍然适用:

  • RAM 和存储有限的小型处理器
  • 通过低速路径进行低带宽通信

有几个 ASCII 控制代码设计用于构建文本。维基百科主题 C0 和 C1 控制代码、基本 ASCII 控制代码描述了分隔符控制代码、FS(文件分隔符)、GS(组分隔符)、RS(记录分隔符)和美国单位分隔符。

可用作分隔符来标记数据结构的字段。如果使用 对于分层级别,US 是最低级别(划分纯文本 数据项),而 RS、GS 和 FS 的划分级别不断增加 由其下级的物品组成的组。Unix 信息格式 使用 US,后跟可选的换表单和换行符来标记 节点的开头。[注14]

MARC 21 使用 US 作为子字段分隔符,RS 作为字段终止符,并且 GS 作为记录终止符。[注15]

在当前版本的 IPTC 7901 中,如果它们不用于其他 目的,建议将 US 用作表中的列分隔符, FS 作为表中的"中心字段分隔符",以及 GS 和 RS 分别用于将以下空格或连字符减号标记为 分别是不间断或软(在字符集中不提供 显式 NBSP 和 SHY 字符).2

另请参阅RFC20中的描述,ASCII格式的网络交换,其中将FS,GS,RS和美国描述为:

FS(文件分隔符)、GS(组分隔符

)、RS(记录分隔符)和美国(单位分隔符):这些信息分隔符 可以以可选方式在数据中使用,除了它们的 层次关系应为:FS最具包容性,则 GS、RS 和美国的包容性最低。 (内容和长度 未指定文件、组、记录或单位。

维基百科主题IPTC 7901描述了从1979年正式批准协议开始的新闻服务消息中使用控制字符,这听起来类似于RSS提要协议。实际规格可从IPTC网站获得,称为IPTC建议的消息格式,1995年。

位模式(即数字化数值)不会过时。ASCII 控制代码的标签反映了在各种上下文中的建议用途 - 串行通信、文本显示和打印、命令行编辑等。更好的文字处理器和文本编辑器在他们的键盘命令集中使用了所有这些代码,并允许将它们全部插入到文件中,自 1970 年代以来,甚至更早。此类程序小心不要将这些代码直接发送到屏幕;它们解释换行符和制表符,有时解释其他换行符和制表符,并以插入符号表示法(例如,SOH 的"^A")或下划线或括号字符以符号显示其他所有内容。当然,如果您担心用户会将您的文件带到屏幕上,请避免 ESC 和上面提到的其他一些文件。否则,请自由使用它们。

很久以前,我修补了 WordStar,使其在需要时将我的点阵打印机置于图形模式。使用WordStar,任何七位代码都可以放入图形数据中。像魅力一样工作。

最新更新