ASCII不可读字符28,29 31

zig*_*ggy 9 java unicode ascii

我正在处理一个我需要根据分隔符进行拆分的文件.

以下代码显示为我正在处理的文件定义的分隔符

private static final String    component   = Character.toString((char) 31);
private static final String    data        = Character.toString((char) 29);
private static final String    segment     = Character.toString((char) 28);
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这些特定分隔符的意义吗?

查看ASCII代码,这些分隔符是文件,组和单元分隔符.我真的不明白这意味着什么.

msr*_*thr 24

在这里找到了.酷网站!

28 - FS - 文件分隔符文件分隔符FS是一个有趣的控制代码,因为它让我们深入了解计算机技术在六十年代的组织方式.我们现在习惯于随机访问媒体,如RAM和磁盘,但是当定义ASCII标准时,大多数数据都是串行的.我不仅谈论串行通信,还谈论打孔卡,纸带和磁带等串行存储.在这种情况下,使用单个控制代码来发信号通知两个文件的分离显然是有效的.为此目的定义了FS.

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

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

31 - US - 单位分隔符要存储在数据库中的最小数据项在ASCII定义中称为单位.我们现在称他们为田地.单元分隔符在串行数据存储环境中分隔这些字段.大多数当前的数据库实现要求大多数类型的字段具有固定长度.记录中有足够的空间来存储每个字段的最大可能成员,即使在大多数情况下不需要这样做.在许多情况下,这会花费大量空间.美国控制代码允许所有字段具有可变长度.如果数据存储空间有限 - 如同六十年代 - 这是保护宝贵空间的好方法.另一方面,串行存储远远低于现代表驱动RAM和磁盘实现的效率.我无法想象现代SQL数据库使用存储在纸带或磁性卷轴上的数据运行的情况......

  • 我更喜欢这个答案!它节省了我额外阅读并直接解决问题. (2认同)

Ara*_*ram 10

阅读本教程ASCII分隔符部分以了解这些内容.然后阅读本文,专门讨论使用28,29和31分隔文本的ASCII方式.


JB *_*zet 0

这些字符是控制字符。它们不是由人类编写或读取的,而是由计算机编写或读取的。您应该在程序中像对待任何其他角色一样对待它们。