一次字符编码尝试


类似于ASCII、 ISO8859-1、GB2312、Unicode等字符编码标准,这里从一个新的思路实现一种编码,即描述编码。


正文

现在字符编码这一块技术已经很成熟了,比较著名的有ASCII、 ISO8859-1、GB2312、Unicode等等, 不过这些编码有一个共同的特征,就是给每个字符给一个指定代码,如A是65(二进制01000001),除此之外,无其他联系。 这里是想从一个新的思路实现一种编码,即描述编码。每个字符也有指定代码,不过指定代码与字符间有可见的逻辑关系, 下面详细说一下。

首先举一个简单的原理示例:

假设,有一个3*3的九宫格:

每个格子是一个码点,有颜色为1,无颜色为0。这个无颜色的九宫格的代码就是000000000。

其中0描述为:

在九宫格中有一个0的形状,如果按照下面“之”字形顺序描述,0的代码是:111101111

如果按照下面“2”字形顺序描述,0的代码是:111101111

其中1描述为:

在九宫格中有一个1的形状,如果按照下面“之”字形顺序描述,1的代码是:010010010;

如果按照下面“2”字形顺序描述,1的代码是:010010010。

因为0和1在图中都关于轴线对称,所以“之”字形、“2”字形,描述的代码都一样,如果有不对称的图形,则不会再相同。

如上图,这里按照“之”字形顺序描述,代码是:100001100;按照下面“2”字形顺序描述,代码是:100100100。 虽然这个符号在现实中并不存在实际的意义,但也可以被准确描述出来。

当然还可以有其他的顺序描述,只要彼此达成共识能还原字符就好。

这里只是举了9宫格的例子,为了描述完现在人们认识到的所有符号,肯定需要更大的方格盘,如64*64等。

现在我们认识世界中的符号都是二维平面内的,按照这个逻辑,我们也可以实现三维空间的符号创造和描述,乃至于到N维空间。

如果用二维平面来描述现存的全部符号,这个方格盘会有点大,我们可以想办法拓展到多维空间,如拓展到三维空间: 如果第一个格子为空,则描述留在二维平面实现;如果第一个格子不为空,则在第三个维度平面描述。以此类推到四维、五维, 乃至N维。

这里提到的码点,有点类似现在流行的二维码的概念,也与3D打印有异曲同工之妙,可能还与其他概念有相似的地方,如电脑字体。 大家可以借鉴理解,比如用在加密实现上就是个不错的主意。






参考资料

【字符编码】彻底理解字符编码 https://www.cnblogs.com/leesf456/p/5317574.html

二维码生成原理及解析代码 https://blog.csdn.net/ajianyingxiaoqinghan/article/details/78837864

二维码的生成细节和原理 https://www.cnblogs.com/alantu2018/p/8504373.html

二维码原理简介 https://www.cnblogs.com/xxaxx/p/3416450.html


返回