【发布时间】:2019-09-11 23:13:19
【问题描述】:
我有几个 TSV 表(对于 ASCII 32 以下的任何字符,只包含常见字符,例如 '\a\b\t\n\v\f\r\e')。我想把它们放到一个流中。我认为可以使用 ASCII 控制字符来分隔它们。但我不确定哪个 ASCII 控制字符(除了上面已经使用的那些)是用于此目的的标准字符。有人知道标准是什么吗?
【问题讨论】:
我有几个 TSV 表(对于 ASCII 32 以下的任何字符,只包含常见字符,例如 '\a\b\t\n\v\f\r\e')。我想把它们放到一个流中。我认为可以使用 ASCII 控制字符来分隔它们。但我不确定哪个 ASCII 控制字符(除了上面已经使用的那些)是用于此目的的标准字符。有人知道标准是什么吗?
【问题讨论】:
我不知道您建议的标准。
许多协议使用带有计数的信封(TCP)或带有偏移量和长度的索引(tar、zip)或在标头中定义的任意唯一分隔符(多部分 MIME)。有一些像您这样的简单系列,但具有使项目分离明显的格式(XML 元素流 [它与文档不同,因为它没有根元素])。
您可能从一开始就不知道有多少表和/或行? (这就是 XML 元素流的用例。)
␀ 似乎是合理的,也许最后有额外的 ␀ 来标记流的结束(DOS/Windows 程序环境块)。
␊ 做一个空行似乎也是合理的(就像在 SMTP 中一样)。
␚(^Z) 是 CP/M 和 DOS 时代常见的文件终止符。
【讨论】:
FS (file separator) 是另一种选择。后者的名字更有意义?古代是怎么用的?应该避免使用 XML,因为我想避免与之相关的复杂性。如果没有 XML,我可以只使用 awk 或任何其他简单工具。有了它,我将不得不使用 XML 解析器,这在许多情况下可能是多余的。此外,我可以保证在我的数据中仅使用来自控制字符的 '\a\b\t\n\v\f\r\e'。我应该可以选择一个合理的分隔符来表示流中的不同文件。