可以用Unicode映射多less个字符?

我要求统计所有可能的有效组合的计数与解释。 我知道一个字符可以被编码为1,2,3或4个字节。 我也不明白为什么连续字节有限制,即使该字符的起始字节清除应该多长时间。

我要求统计所有可能的有效组合的计数与解释。

1,111,998 :17架飞机×65536个字符 – 2048个代理 – 66个非字符

请注意,UTF-8和UTF-32在理论上可以编码超过17个平面,但是由于UTF-16编码的限制,范围受到限制 。

实际上在Unicode 6.0中分配了109,384个代码点。

我也不明白为什么连续字节有限制,即使该字符的起始字节清除应该多长时间。

在UTF-8中这个限制的目的是使编码自动同步 。

对于一个反例,考虑中国GB18030编码。 在那里,字母ß被表示为字节序列81 30 89 38 ,其包含数字08的编码。 所以,如果你有一个stringsearchfunction不是针对这种编码特定的怪癖,那么search数字8将在字母ß内find一个误报。

在UTF-8中,这是不可能发生的,因为引导字节和尾字节之间的非重叠保证了在较长字符的编码内永远不会发生较短字符的编码。

Unicode允许有17个飞机 ,每个65,536个可能的字符(或“代码点”)。 这总共有1,114,112个可能的字符。 目前,这个空间只有大约10%被分配。

这些代码点编码的精确细节与编码有所不同,但是您的问题听起来像是在考虑UTF-8。 对继续字节的限制原因大概是这样,很容易find下一个字符的开始(因为连续字符总是10xxxxxx的forms,但起始字节不能是这种forms)。

Unicode支持1,112,114个码点。 代理代码点有2048个,给出1,110,066个标量值。 其中有66个非字符,导致1,110,000个可能的编码字符(除非我做了计算错误)。

Unicode不是一种编码,是一种字符映射。 根据维基百科,Unicode目前包含109242个不同的字符。

给出一个比喻准确的答案, all of them

UTF-8编码中的连续字节允许在“线路噪声”的情况下重新同步编码的八位字节stream。 编码器只需要向前扫描一个在0x80和0xBF之间没有值的字节,以知道下一个字节是新字符点的开始。

从理论上讲,今天使用的编码允许expressionUnicode字符数最多为31位的字符。 实际上,这种编码实际上是在像Twitter这样的服务上实现的,其中最大长度的tweet可以编码高达4340比特的数据。 (140个字符[有效和无效],每个31位)。

Unicode的hex数量为110000,即1114112