49

Unicode 从 ASCII 定义了几个控制字符。http://www.unicode.org/charts/PDF/U0000.pdf

我看到许多控制字符被广泛使用,但我真的看不出在哪里使用了“信息分隔符”。(U+001C~U+001F)

这些是什么?他们的历史是什么?它们是用来做什么的?

4

3 回答 3

58

Lammert Bies解释了它们的用法和背后的历史。

28 – FS – 文件分隔符 文件分隔符 FS 是一个有趣的控制代码,因为它让我们了解 60 年代计算机技术的组织方式。我们现在习惯于随机访问 RAM 和磁盘等介质,但在定义 ASCII 标准时,大多数数据都是串行的。我不仅在谈论串行通信,还谈论串行存储,如穿孔卡、纸带和磁带。在这种情况下,使用单个控制代码来表示两个文件的分离显然是有效的。FS 就是为此目的而定义的。

29 – GS – 组分隔符 数据存储是一些控制代码进入 ASCII 定义的主要原因之一。数据库大部分时间都是用包含记录的表来设置的。一张表中的所有记录具有相同的类型,但不同表的记录可以不同。组分隔符 GS 被定义为分隔串行数据存储系统中的表。请注意,当时没有使用单词表,ASCII 人称它为组。

30 – RS – 记录分隔符 在组(或表)中,记录用 RS 或记录分隔符分隔。

31 – US – 单位分隔符 存储在数据库中的最小数据项在 ASCII 定义中称为单位。我们现在称它们为字段。单位分隔符在串行数据存储环境中分隔这些字段。大多数当前的数据库实现要求大多数类型的字段具有固定长度。记录中分配了足够的空间来存储每个字段的最大可能成员,即使在大多数情况下这不是必需的。在许多情况下,这会占用大量空间。US 控制代码允许所有字段具有可变长度。如果数据存储空间有限(如 60 年代),这是保留宝贵空间的好方法。另一方面,串行存储的效率远低于现代的表驱动 RAM 和磁盘实现。我可以'

单位分隔符可以提供与 CSV 文件中的逗号或制表符分隔文件中的制表符基本相同的用途。

于 2013-09-13T09:00:08.053 回答
8

你的意思是说它们中的大多数现在通常都不用了吗?控制字符主要与设备控制功能有关,但其中一些可能已用作文本文件中的分隔符。如需快速参考,请查看我的 C0 Controls 表

信息分隔符已用于以简单的方式对数据进行分组,但如今,二进制格式或 XML 格式都用于数据组织。仍然有一些好奇心,例如在 Microsoft Word 中内部使用 U+001E 和 U+001F 来实现程序自己的“不间断连字符”和“可选连字符”的想法(与 Unicode 字符相反,用于类似目的)。这主要说明程序可以以奇怪的方式使用控制字符。如果字符包含在传输到其他程序的文本中,问题当然会出现。

于 2012-01-01T20:11:54.867 回答
0

它们在功能上故意模棱两可。来自字符编码开发的标准参考(Mackenzie, Charles E. Coded-Character Sets: History and Development . Addison-Wesley Longman Publishing Co., Inc., 1980.),第 26 章第 1 节,第 460 页:

四个额外的通用字符,即所谓的信息分隔符,被设计到 [ASCII] 7 位代码和 EBCDIC 中。文件分隔符、组分隔符、记录分隔符和单元分隔符被广泛定义用于分隔信息块。但是如何使用它们来分隔块,将使用什么文件和记录结构的哲学,故意没有指定。这种详细的规范将留给将使用分隔符的特定数据处理应用程序。最初,定义了结构化信息块的分层[原文如此]哲学。一个“文件”比“组”大,而且会包含“组”。“组”比“记录”更大,并且会包含“记录”。并且“记录”比“单位”更大,并且会包含“单位”。最终,标准委员会将此分层[原文如此]规范设为可选;也就是说,分隔符不需要分层使用 [原文如此],如果是 buf,那么分层结构将如上所述。标准委员会意识到,与设备控制一样,信息分隔符的非特异性可能会导致信息交换的困难,但这种困难在出现的极少数情况下可以解决。

使用此大纲层次结构的标准的一个示例是用于交换法医生物特征图像的ANSI/NIST-ITL 标准的现已取代版本。ITL “<a href="https://www.nist.gov/system/files/documents/2021/03/23/ansi-nist_2010_traditional_encoding.pdf" rel="nofollow noreferrer">传统编码”使用了 ASCII 分隔符如下:

␜ 文件分隔符——分隔逻辑记录。

␝ 组分隔符 – 分隔字段。

␞ 记录分隔符——分隔重复的子字段。

␟ 单位分隔符——分隔信息项。

这种用法可能看起来与分隔符的指定用途相矛盾,但了解字符代码的预期层次结构会使 ITL 标准中的选择更合适。

于 2021-06-22T20:54:42.413 回答