【发布时间】:2017-04-06 22:25:55
【问题描述】:
据说hereUTF-16的最大码位是10FFFF
也写在那个页面上
BMP 字符需要一个 16 位代码单元来处理或存储。
但在位表示中10FFFF 是
0001 0000 1111 1111 1111 1111
我们看到它占用了16位wchar_t的15位以上
(允许实现仅支持具有 >=0 值的宽字符,与 wchar_t 的符号无关)
对于 16 位 wchar_t,真正最大的代码点是多少?
【问题讨论】:
-
你了解“代码点”和“代码单元”的区别吗?或者知道 UTF-16 是如何工作的?
-
@dan04 "code point" 是数字,指定给每个字母。我不知道 UTF-16 是如何工作的。我标记它是因为据说 16 位
wchar_t使用 UTF-16。而且我不知道什么是“代码单元”。 -
@dan04 你知道代码点的哪个最大值可以存储在一个 16 位
wchar_t类型的单个变量中吗? -
UTF-16 代码单元是 16 位,因此它是 UTF-16。但是最大的码点 10FFFF 需要 2 个单位(2 wchar_t),所以称为代理对。单个 wchar_t(假设为 16 位)只能编码整个 21^2 空间的大约 63K 个字符。
-
@Flanker 请将可以存储在 16 位 wchar_t 单个变量中的最大代码点值放在答案中,以便我投票