ASCII的SOH的用处

讲讲 ASCII 字符编码中 SOH 的作用。

笔者在工作中,曾切切实实的用过 ASCII 的控制字符 SOH。

先介绍下背景吧:

  1. 公司内有很多个系统,其中涉及到系统之间的数据同步,可以通过网络请求,也可以通过文件。
  2. 用文件的方式的话,就涉及到分隔符的问题。例如,在 csv 格式中,用逗号作为分隔符;也有写系统用 竖线 | 作为分隔符
  3. 而笔者接触的系统,用的是 SOH 作为分隔符,我推测是因为该系统用的 C 语言,常用该字符作为分隔符。

在不同操作系统下,查看其文件会用不同的体现。

实践下

这是一段 Java 代码:

public class SOHTest {
  public static void main(String[] args) {
    String string1 = "HOW";
    String string2 = "DO";
    String string3 = "YOU";
    String string4 = "DO";
    StringBuffer buffer = new StringBuffer();
    buffer.append(string1).append("\001").append(string2).append("\002").append(string3).append("\003").append(string4);
    System.out.println(buffer);
  }
}

我们编译,并将输出结果重定向到一个文件:

javac SOHTest.java
java SOHTest > 1.txt

我们用 VSCode 打开,可以看到有这样的分隔符

用一些文本编辑器,可以看的更清楚一点:

注意,这种控制字符,是不可打印的,所以在不同情况下显示的也不同。例如在 IDE 里,在浏览器上,显示出来的效果可能都不同,例如笔者遇到的就有这些:

本文相关的代码和 1.txt 文件已上传到 Giteehttps://gitee.com/peterjxl/LearnJava/tree/master/src/01.JavaSE/05.OOP/15.character

posted @ 2024-06-14 11:25  peterjxl  阅读(11)  评论(0编辑  收藏  举报