问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中的代码点和代码单元分别都是什么?谁能详细解释

发布网友 发布时间:2022-05-06 09:57

我来回答

1个回答

热心网友 时间:2022-06-29 07:52

说白了一个代码点就是一个Unicode字符。代码单元就是代码点的集合。
字符视图
要了解字符集标准,您必须能区分三种不同的字符视图:

字符集(字符的抽象列表)。
作为带标量值的“代码点”的字符。
作为编码数据的字符。
字符集(字符的抽象列表)

字符集是各种文字(包括拉丁文、西里尔文、中文、朝鲜语、日语、希伯来语和阿拉伯语)中所包含的字符的一个抽象列表,由一百多万个字符组成。字符集还包括其他符号,例如音符。

Unicode 和 GB18030 标准都具有字符集。当某个标准添加了新字符时,为了保持对等,另一个标准也将添加这些字符。

作为带标量值的“代码点”的字符

注意 这第二个字符视图只适用于 Unicode,而不适用于 GB18030。
字符集中的每个字符都被分配到一个“代码点”。每个代码点都有一个特定的数值,称为标量值。该标量值通常用十六进制表示。

代码点存在于“代码空间”中。代码空间由许多标量值组成,这些值被划分在两个平面中:

基本多语种平面(64k 大小)。
在 Unicode 中,此下平面中的值的十六进制表示位于 U+0000 到 U+FFFF 的范围中。

辅助多语种平面(16 个 64k 大小的附加节)。
在 Unicode 中,此上平面中的值的十六进制表示位于 U+10000 到 U+10FFFF 的范围中。

所有可能的标量值的完整代码空间的大小为 17 * 64k(1,088,000 个可能值)。

作为编码数据的字符

每个编码形式将字符从字符集转换为编码数据。

在 GB18030 中,编码数据直接从字符集派生:标量值(作为字符集和编码数据之间的媒介)的概念只适用于 Unicode。

在 Unicode 中,通过向标量值应用某个算法来派生编码数据。

Unicode 定义了三种字符编码形式:

UTF-8
UTF-16
UTF-32
代码点和代码单元

在每种编码形式中,代码点被映射到一个或多个代码单元。

注意 有关代码点的概述,请参见上一节字符视图。
“代码单元”是各个编码形式中的单个单元。代码单元的大小等效于特定编码的位数测量单位:

UTF-8 中的代码单元由 8 位组成。
UTF-16 中的代码单元由 16 位组成。
UTF-32 中的代码单元由 32 位组成。
GB18030 中的代码单元由 8 位组成。
每个代码点中的代码单元数

映射到代码点所需的代码单元数根据编码形式而有所不同:

UTF-8
在 UTF-8 中,因为代码单元较小的缘故,每个代码点常常被映射到多个代码单元。代码点将被映射到一个、两个、三个或四个代码单元。

UTF-16
UTF-16 的代码单元大小是 8 位代码单元的两倍。所以,标量值小于 U+10000 的代码点被编码到单个代码单元中。

对于标量值大于或等于 U+10000 的代码点,每个代码点需要两个代码单元。在 UTF-16 中,这些代码单元对有一个独特的术语:“Unicode 代理对”。

注意 下面对 Unicode 代理对的支持进行了讨论。
UTF-32
UTF-32 中使用的 32 位代码单元足够大,每个代码点都可编码为单个代码单元。

GB18030
在 GB18030 中,因为代码单元较小的缘故,每个代码点常常被映射到多个代码单元。代码点将被映射到一个、两个或四个代码单元。

对 Unicode 代理对的支持

某些受 Unicode 支持的文字包含代码点的标量值大于或等于 U+10000 的字符。在 UTF-16 中,通过使用代理对来对这些代码点进行编码。

正确处理 Unicode 代理对非常重要。例如,当您在使用 UTF-16 编码的应用程序中处理文本时,如果要添加、删除或选择字符以进行剪切、复制或粘贴操作,文本光标必须将每个代码点作为单个文本字符导航。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华硕X205TABIOS里launchcsm这个选项怎么找 朋友在一起,本来想着相互花钱不要计较那么多的,结果对方却老是想着比... 别人叫你请他吃东西,那他是不是不讨厌你。算是给你机会吗?? 哪种乌冬面比较好吃 ...膳,你小时候最爱吃那儿的豌豆黄儿。还记得那回我带你去北海吗... 苍梧鸟是什么意思? 右手五指受伤其中小指无名指各截掉一节可评几级伤残 ...桡骨骨折伤残鉴定怎么算呢,是左手的算左手的右手算右手,还是一起算... 工伤伤残鉴定中,对右手左手有区别吗? 车子出了事故,4s店在维修合同上写的交车日期,如果4s店超出预订时间交车... 集合java代码如何实现 点了手机相机的还原默认设置会不会把相片删掉 VIVO是步步高的标志么? access数据库中怎么替换字符? 为什么移动硬盘一开始存文件可以但是再插上就显示无法访问位置,格式化也不行? 移动硬盘无法访问位置不可用,里面的资料怎样找到 y=x的sinx次幂求导 y=xsinx,求他的10阶导数 y=x^sinx 求导 y=x·sinx 的导数 我同学说y=x的sinx次方的导数这样子算,确定可以? y=x^sinx 求导。 y=x^sinx的导数为什么 求y等于x的sinx的次方的导数解 函数y=x^sinx的导数 y=x^sinx求导 设Y=xsinx,求y的导数. y=xsinx的导数怎么解 过程完整 y=xsinx的N阶导数? y=x乘sinx的导数是什么? 热电偶与测温仪表是怎样使用的 白菜稀饭粥怎么做? 电饭煲白菜稀饭? java,求写出代码 白菜瘦肉粥怎么做好吃,白菜瘦肉粥的家常做法 用大白菜怎么做好吃,下稀饭 白菜,肉怎么做稀饭 怎么煮白菜稀饭能一起吃吗 肉白菜萝卜稀饭怎么煮 土豆白菜稀饭怎么煮 球白菜和大米能煮稀饭吗? 怎样煮白菜稀饭? “我就是上帝” 写成英语是什么? 怎么理解与神融为一体 我们是上帝的一部分吗? 是上帝创造了我还是我创造了上帝? “我就是上帝” 写成英语是什么? 要重点突出 “就是” just i am god 上帝死了,我就是上帝。我若死了,死亡就是上帝 这句话是什么意思? 英文“我就是上帝”或者“主宰一切”怎么写 如何证明我们是上帝创造的?如果是反对上帝创造我们,那反驳的理由是什么? 假如世上根本就没有上帝,那么信仰还有用吗?或者说还会有信仰吗?