全国统一服务热线

186-7589-7389

新闻中心

当前位置:首页>新闻中心

Unicode编码的两个层次

抽象化编码层次

将一个字符编码为一个数字(不涉及每个数字用几个字节表示,具体细节如定长或变长)

特定编码层次

也就是UTF,将抽象编码层面的数字编码为较终的存储形式,需要明确是使用定长还是变长;如果使用定长,则设置几个字节;如果使用定长,则设置几个字节;如果使用定长,则设置几个字节;如果使用定长,则设置几个字节;如果使用定长,则设置几个字节;

这里所谓的抽象和具体,以U+0061(ascii字母a)为例,16进制的0061是10进制的97,所谓的抽象,也就是用97来表示a;所谓具体,就是电脑底层如何表示的问题。即使表示一个整数,你也面临着是用byte、short还是int、long来表示的问题,这就是具体。更具体的是编码,你还面临着长度还是长度的选择。以UTF-32为例,本质上和一个四字节的unsignedint(无符号整型)没什么区别。

怎么算不重复?

在里不打算讨论哲学意义上的等同。你可能会遇到一些非常相似的字符。有了编号,我们可以简单地说,只要是不同编号的两个字符,就不会重复。

U+[XX]XXXX是码点的表示形式,X代表一个16制数字,可以有4-6个数字,不到4个数字前补0补4个数字,超过4个数字后按几个数字补。特定范围为U+0000~U+10FFFF。

注意不要把它和UTF-16的代码混淆,尤其是那些4位代码点。虽然很像,但是一个是编号,一个是编码,处于不同的概念水平。

我们可以看到,至少有三个码点上的a非常相似。U+FF41中所谓的FULLWIDTH(全宽)实际上是全角,也就是两个半角宽,我想我们都很熟悉。

较初GB2312出来的时候,凭借自己的编码空间很大,ASCII中的字母符号等重复制作了所谓的全角版本,Unicode又收集了这些。


QQ咨询
在线咨询
在线报名
186-7589-7389
186-7589-7389
返回顶部