Java ASCII不可读字符28、29和31

Java ASCII不可读字符28、29和31,java,unicode,ascii,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

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

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

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);
有人能解释一下这些特殊分离器的意义吗


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

请阅读以理解这些。然后阅读关于使用28、29和31分隔文本的ASCII方法的详细说明。

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

28–FS–文件分隔符文件 分隔符FS是一个有趣的控件 代码,因为它让我们对 计算机技术的发展方式 六十年代组织的。我们现在是 用于随机访问RAM等媒体 和磁盘,但当 定义了标准,大多数数据是 电视连续剧我不仅仅是说 串行通信,还关于 串行存储,如穿孔卡、纸张 磁带和磁带。以这样的方式 在这种情况下,采取行动显然是有效的 有一个单一的控制代码来发送信号 两个文件的分离。财政司司长 是为此目的而定义的

29–GS–组分隔符 数据存储就是其中之一 一些控制的主要原因是什么 要在ASCII定义中获取的代码。 大多数情况下,数据库都是安装程序 带有表,包含记录。全部的 一个表中的记录具有相同的属性 类型,但不同表的记录不同 可能会有所不同。组分隔符 GS定义为在一个表中分隔表 串行数据存储系统。注意 当时没有使用table这个词 那一刻,人们称之为 一群

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

31–美国–单元分离器 要存储的最小数据项 在数据库中,在 ASCII定义。我们会叫他们 现在上场。单元分离器 以串行方式分隔这些字段 数据存储环境。最新 数据库实现要求 大多数类型的字段都有固定的 长度。记录中有足够的空间 分配给存储最大 每个字段的可能成员,即使 在大多数情况下,这是不必要的。 这会占用大量的空间 很多情况下。美国控制代码 允许所有字段都有一个变量 长度。如果数据存储空间不足 与60年代一样有限,这是一个 保护宝贵空间的好方法。 另一方面是串行存储 比桌子效率低很多 的受驱动RAM和磁盘实现 现代。我想象不出有什么变化 使用现代SQL数据库的情况 使用存储在纸上的数据运行 磁带或磁带盘


ascii控制字符的范围为28-31。(0x1C至0x1F)

调用示例:

char record_separator = 0x1F;
String s = "hello" + record_separator + "world"

我更喜欢这个答案!它为我节省了很多额外的阅读,并直接解决了这个问题。尽管它只会从添加所选答案中给出的十进制ASCII码中获益。此外,由于我来这里是为了帮助我从聊天应用程序保存的文本文件中删除这些代码,所以给出十六进制代码也很好:1C、1D和1F。关于如何使用正则表达式编写,顺便说一句,请参见此处:
char record_separator = 0x1F;
String s = "hello" + record_separator + "world"