UTF-16代码点

Unicode 的明确目标是给世界上所有的字符提供全局唯一标识符,而 16 位的字符长度限制已 不能满足这种需求。这些全球唯一标识符被称为代码点( code points ),是从 0 开始的简 单数字。代码点是如你想象的字符代码那样,用一个数字来代表一个字符。字符编码要求将 代码点转换为内部一致的码元,而对于 UTF-16 来说,代码点可以由多个码元组成。 在 UTF-16 中的第一个 2 代码点表示单个 16 位码元,这个范围被称为多语言基本平面( Basic Multilingual Plane , BMP )。任何超出该范围的代码点都不能用单个 16 位码元表 示,而是会落在扩展平面( supplementary planes )内。 UTF-16 引入了代理对( surrogate pairs )来解决这个问题,允许使用两个 16 位码元来表示单个代码点。这意味着 字符串内的任意单个字符都可以用一个码元(共 16 位)或两个码元(共 32 位)来表示,前 者对应基本平面字符,而后者对应扩展平面字符。 在 ES5 中,所有字符串操作都基于 16 位码元,这表示在处理包含代理对的 UTF-16 字符时 会出现预期外的结果,就像这个例子:

results matching ""

    No results matching ""