首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UTF16字符总数

UTF16字符总数
EN

Stack Overflow用户
提问于 2011-02-13 20:24:22
回答 5查看 3.8K关注 0票数 6

你能计算出一个UTF16编码通过排列/组合表示1,112,064个数字吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-13 20:46:13

UNICODE标准是3.9节规定的:

Unicode的每种编码形式都将

代码点U+0000..U+D7FF和U+E000..U+10FFFF映射到唯一的代码单元序列。

因此,可以由UTF-16表示的代码点(‘字符’)的数量为

代码语言:javascript
复制
0xD7FF + 1 + (0x10FFFF - 0xE000) + 1 = 1 112 064

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

此外,能够以给定的编码表示给定的代码点并不意味着它是有效的-它必须首先由UNICODE标准进行分配和描述。因此,没有一个数学公式可以计算出可以表示的字符数,1112064这个数字并不一定意味着有1M个有效字符。

有关详细讨论,请参阅UNICODE标准的section 3.9

票数 8
EN

Stack Overflow用户

发布于 2011-02-13 20:28:03

不是的。由UTF-16表示的字符数只能通过规范知道,不能通过数学计算知道。UTF-16是人们制定的一组特定的编码规则,而不是某个公式的固有属性。

票数 4
EN

Stack Overflow用户

发布于 2011-02-13 20:33:59

请在此处查看答案https://stackoverflow.com/questions/280182/

它几乎和规范一样好,嗯,它结合了一些规范。我引述如下:

UTF-16是一种长度可变的代码;它的字符占用2或4个字节。0xD800-0xDFFF范围内的2字节值保留用于构造4字节字符,所有4字节字符由0xD800-0xDBFF范围内的2个字节和0xDC00-0xDFFF范围内的2个字节组成。因此,Unicode不会分配U+D800-U+DFFF范围内的任何字符。

UTF-16的容量: 1,112,064

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4984103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档