作为带标量值的“代码点”的字符
注意 这第二个字符视图只适用于 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 编码的应用程序中处理文本时,如果要添加、删除或选择字符以进行剪切、复制或粘贴操作,文本光标必须将每个代码点作为单个文本字符导航 。
关于Java核心技术书中的代码点和代码单元是怎么理解的呢?代码单元”是各个编码形式中的单个单元 。代码单元的大小等效于特定编码的位数测量单位:
UTF-8 中的代码单元由 8 位组成 。
UTF-16 中的代码单元由 16 位组成 。
UTF-32 中的代码单元由 32 位组成 。
GB18030 中的代码单元由 8 位组成 。
每个代码点中的代码单元数
映射到代码点所需的代码单元数根据编码形式而有所不同:
UTF-8
推荐阅读
- nova9pro鸿蒙系统,nova9pro鸿蒙系统安卓系统区别
- css使div在td内居中显示,cssdiv内容居中
- 网页如何运行java代码,网页运行java程序
- 关于c语言gets函数实例的信息
- jquery跳转到当前页面指定位置,jquery点击切换div
- html5触屏画图,html5画板
- 远程登陆命令linux 登录远程linux系统可以用的方法
- chatgpt登上后转圈圈,ChatGPT一直转圈圈
- 阿里云韩国服务器,chia阿里云服务器