UTF16字符总数

use*_*344 6 unicode utf-16 character-encoding

你能算出一个UTF16编码代表1,112,064个数字的permeations/commbinations吗?

Ond*_*cny 6

UNICODE标准第3.9节说:

每个编码形式将Unicode代码点U + 0000..U + D7FF和U + E000..U + 10FFFF映射到唯一代码单元序列.

因此,可由UTF-16表示的代码点("字符")的数量是

0xD7FF + 1 + (0x10FFFF - 0xE000) + 1 = 1 112 064
Run Code Online (Sandbox Code Playgroud)

UNICODE标准通常为32位.但是,特定编码保留较少的位数来表示最常见的字符对它们可合法表示的实际字符数施加特定限制.为了允许更长的比特序列,这反过来允许描述更长的8(UTF-8)或16(UTF-16)比特的代码点,定义特殊的代理代码点.

此外,能够在给定编码中表示给定代码点并不意味着它是有效的 - 它必须首先由UNICODE标准分配和描述.因此,没有数学公式可以产生可以表示的字符数,而数字1 112 064并不一定意味着有1M个有效字符.

有关详细讨论,请参阅UNICODE标准的第3.9节.