字符集与编码(四)--Unicode

摘要: 本文系统介绍了 Unicode 方面的一些重要知识, 如码点, 平面, 代理区, 代理对以及 UTF, 用具体的例子讲解了码点到 UTF-8 及 UTF-16 的转换原理与过程. 文中还顺便鸟瞰了一下 BMP 字符集, 以此获取更加直观的印象.

前面谈到不少的 Unicode, 但一直没有系统地谈及 Unicode 的方方面面, 所以本篇文章专门谈谈 Unicode, 当然了, Unicode 是一个庞大的主题, 这里也是拣些重要的方面谈谈而已, 免不了挂一漏万.

什么是 Unicode?

按 Unicode 官方的说法, Unicode 是 Unicode Standard(Unicode标准)的简写, 所以 Unicode 即是指 Unicode 标准.

按 wiki 的说法, 它是一个计算机工业标准(a computing industry standard).

继续阅读

字符集与编码(二)--编号 vs 编码

摘要: 编号是字符到最终编码的一个过渡层与抽象层, 起着承上启下的作用, 它与最终编码在形式上也常常很相似, 在 Unicode 中, 码点(code point)扮演的正是编号的角色. 广义而言, 编号其实也是一种编码.

在深入研究 字符集编码, 简称 编码 之前, 我们先引入一个概念: 编号(code), 引入它是为了更好地与 编码(encode) 相区分.

如果你对 Unicode 有深入了解, 你也许已经意识到了 Unicode 中 码点(code point) 扮演的正是 编号 的角色. 类似的还有 GB 系列中所谓的 区位码.

其实叫什么并不重要, 爱咋咋地, 我并不关心. 但乱叫容易叫混了, 比如把 码点 也叫成 Unicode 编码, 这里先把这些归入到 编号 概念. 为区别起见, 用黑色加粗的 编码 特指 字符集编码.

到了后面你甚至会为 字符集编码 的边界在哪而困惑, 为它的准确定义而纠结, 不过到那时你已经属于"难得糊涂"了, 编号 这一概念你也可以把它丢到爪哇国去了.

继续阅读