您可以计算出UTF 16编码通过排列/组合代表1,112,064个数字吗?
最佳答案
UNICODE标准在3.9节中说:
Each encoding form maps the Unicode code points U+0000..U+D7FF and U+E000..U+10FFFF to unique code unit sequences.
因此,可以由UTF-16表示的代码点(“字符”)的数量为
0xD7FF + 1 + (0x10FFFF - 0xE000) + 1 = 1 112 064
UNICODE标准通常为32位。但是,特定的编码保留了较少的位数以表示最常见的字符,从而对其合法表示的实际字符数施加了特定限制。为了允许更长的位序列,进而允许描述比8(UTF-8)或16(UTF-16)位更长的代码点,定义了特殊的替代代码点。
同样,能够以给定的编码表示给定的代码点并不意味着它是有效的-它必须首先由UNICODE标准进行分配和描述。因此,没有数学公式可以得出可以表示的字符数,数字1 112 064不一定表示有1M个有效字符。
有关详细讨论,请参见UNICODE标准的section 3.9。
关于unicode - UTF16字符总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984103/