(编码)字符集 - 为什么映射到 unicode 中的代码点?

问题描述 投票:0回答:2

据我了解,编码字符集将数字(称为代码点)映射/分配给(抽象)字符(例如,德语字符 ü 到 unicode 中的代码点 00FC)。

这个代码点可以用不同的方式编码(例如以字节模式表示):

UTF-8(1 字节)、UTF-16(2 字节)和 UTF-32(4 字节)

所以流程是:

(抽象)字符 ---> 映射到代码点(编码)字符集 --> 将代码点编码为 1...n 字节

为什么会有这个中间阶段的代码点?为什么(抽象)字符不直接映射到 1...n 字节?

(抽象)字符 --> 映射到 1...n 字节

这个中间阶段(为字符分配数字)也在其他(编码的)字符集中完成。所以一定有充分的理由。

我想了解为什么没有直接映射到字节,以及是否存在没有这个中间阶段并直接映射到字节的字符集。

提前致谢...

unicode encoding utf-8 character
2个回答
1
投票

为什么(抽象)字符不直接映射到字节?

要做到这一点,我们必须有一种单字节编码方案,每个人都同意该方案最适合每种可能的情况。

我们距离实现这一目标还有很长的路要走。 UTF-8、-16 和 -32(更不用说所有其他永远不会消失的遗留编码)都有不同的优势,并且被不同的社区用于不同的目的。

在使用多种字节编码的情况下,你需要在它们背后有一个统一的编码字符集,以便每个编码都可以来回映射到该字符集。另一种方法是,您必须在每个可能的编码对之间进行映射表的组合爆炸。

(这就是我们在 Unicode 之前的情况。表格不完整、有损且不一致。那不是好时光。)


0
投票

这只是为了分隔不同的实体 - 代码点(数字)及其表示形式。还应该考虑到 Unicode 中的大多数代码点都是保留的,也就是说,它们还没有与之关联的字符。

© www.soinside.com 2019 - 2024. All rights reserved.