Unicode和ASCII的确切区别是什么?

ASCII共有128个字符(扩展集为256个)。

Unicode字符有大小规范吗?


当前回答

java提供了对Unicode的支持,即它支持所有世界范围的字母。因此,java中的char的大小是2字节。和范围是0到65535。

其他回答

ASCII有128个码位,分配给图形字符和控制字符(控制码)。

统一码有1114,112个码位。目前大约有10万个编码点被分配给了字符,许多编码点被永久地变成了非字符(即不再用于编码任何字符),大多数编码点还没有分配。

ASCII和Unicode唯一的共同点是:1)它们都是字符代码。2) Unicode的128个第一个码位已经定义为与ASCII相同的含义,只是ASCII控制字符的码位只是定义为表示控制字符,其名称对应于其ASCII名称,但其含义在Unicode中没有定义。

然而,有时Unicode被描述为“宽ASCII”(即使在Unicode标准中!)。这是一个口号,主要试图传达这样一种思想,即Unicode是一种通用字符代码,就像ASCII曾经是那样(尽管ASCII的字符库严重不足,无法实现通用),而不是在不同的系统和应用程序以及不同的语言中使用不同的代码。

Unicode本身只定义字符的“逻辑大小”:每个字符都有一个特定范围内的编码。这些编码可以使用不同的传输编码来表示,并且在内存内部,Unicode字符通常使用每个字符一个或两个16位数来表示,这取决于字符范围,有时每个字符使用一个32位数。

ASCII定义了128个字符,对应于数字0-127。Unicode定义了(小于)221个字符,类似地,这些字符映射到数字0-221(尽管目前不是所有的数字都被分配了,有些是保留的)。

Unicode是ASCII的超集,数字0-127在ASCII中的含义与在Unicode中的含义相同。例如,数字65的意思是“拉丁大写字母‘A’”。

因为Unicode字符通常不适合一个8位字节,所以有许多方法将Unicode字符存储在字节序列中,例如UTF-32和UTF-8。

存储

给定的数字仅用于存储1个字符

ASCII⟶27位(1字节) 扩展ASCII⟶28位(1字节) UTF-8⟶最小28,最大232位(最小1,最大4字节) UTF-16⟶最小216,最大232位(最小2,最大4字节) UTF-32⟶232位(4字节)


使用情况(截至2020年2月)

java提供了对Unicode的支持,即它支持所有世界范围的字母。因此,java中的char的大小是2字节。和范围是0到65535。

ASCII定义128个字符,而Unicode包含超过120,000个字符。