字符编码问题之UTF-16不直接采用4字节定长编码来支持所有字符如何解决

简介: 字符编码问题之UTF-16不直接采用4字节定长编码来支持所有字符如何解决

问题一:UTF-16为什么不直接采用4字节定长编码来支持所有字符?


UTF-16为什么不直接采用4字节定长编码来支持所有字符?


参考回答:

UTF-16不直接采用4字节定长编码来支持所有字符,是因为这样会浪费大量的存储空间,并且降低编码的处理效率。UTF-16通过代理对的方式,在保持处理效率的同时,也支持了所有的Unicode字符。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/653969


问题二:UTF-16如何表示超过两个字节的字符?如何判断UTF-16中的四个字节是表示一个字符还是两个字符?


UTF-16如何表示超过两个字节的字符?如何判断UTF-16中的四个字节是表示一个字符还是两个字符?


参考回答:

UTF-16通过代理对来表示超过两个字节的字符。代理对包括一个高半区编码(前两个字节),其范围在D800-DBFF(称为代理码点),和一个低半区编码(后两个字节),其范围在DC00-DFFF。这两个码元组合成一个四个字节表示的字符。

通过检查码元的范围来判断。如果前两个字节的范围在D800-DBFF(高半区),并且紧接着的后两个字节的范围在DC00-DFFF(低半区),则这四个字节组合起来表示一个字符,否则它们各自表示两个独立的字符。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/653970


问题三:UTF-16中码元和Unicode编号值之间的计算公式是什么?


UTF-16中码元和Unicode编号值之间的计算公式是什么?


参考回答:

UTF-16中码元和Unicode编号值之间的计算公式取决于字符是否位于基本多语言平面(BMP)或增补平面。在BMP中,码元直接映射到Unicode编号。在增补平面中,需要使用代理对,并且编码的转换涉及将Unicode编号分解为两部分,然后映射到两个码元。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/653971


问题四:UTF-16如何将增补平面的Unicode编号映射到码元?


UTF-16如何将增补平面的Unicode编号映射到码元?


参考回答:

UTF-16将增补平面的Unicode编号映射到两个码元。首先,从Unicode编号中取出前四位作为平面号,然后将其余的16位映射到两个码元。高半区编码(前两个字节)的范围是D800-DBFF,而低半区编码(后两个字节)的范围是DC00-DFFF。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/653972


问题五:UTF-16如何划分编码空间?


UTF-16如何划分编码空间?


参考回答:

UTF-16将编码空间0000 ~ 10FFFF切成了17个平面(或称为区块)。每个平面空间码点数都是65536个。第一个平面称为基本多语言平面(BMP),它涵盖了最常用的字符,并使用定长两个字节。除此之外的字符都放在增补平面里,使用两个码元的定长四个字节表示。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/653973

目录
相关文章
|
1月前
字符编码问题之GB2312编码设计来避免与ASCII字符编码冲突如何解决
字符编码问题之GB2312编码设计来避免与ASCII字符编码冲突如何解决
29 0
|
1月前
字符编码问题之GB18030实现字节变长编码的如何解决
字符编码问题之GB18030实现字节变长编码的如何解决
21 0
|
1月前
字符编码问题之GB2312编码扩充到包括更多汉字和生僻字的如何解决
字符编码问题之GB2312编码扩充到包括更多汉字和生僻字的如何解决
40 0
|
4月前
|
存储 JavaScript Java
[字符编码] 理论篇:常见字符集与编码方式
[字符编码] 理论篇:常见字符集与编码方式
120 0
|
10月前
|
自然语言处理 Java 索引
Java中的Unicode字符编码与占用比特位解析
Java中的Unicode字符编码与占用比特位解析
|
存储 Windows
“浅入深处“编码历史,字符串编码(ASCII, GBK, ANSI, Unicode, UTF-8编码),为什么记事本默认ANSI编码,Unicode和UTF8有什么区别
“浅入深处“编码历史,字符串编码(ASCII, GBK, ANSI, Unicode, UTF-8编码),为什么记事本默认ANSI编码,Unicode和UTF8有什么区别
115 0
错误: 编码GBK的不可映射字符
错误: 编码GBK的不可映射字符
124 0
|
Web App开发 存储 Windows
字符编码知识:Unicode、UTF-8、ASCII、GB2312等编码之间是如何转换的?
转自:  http://apps.hi.baidu.com/share/detail/17798660 字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得字符编码的知识。不注意的人可能对这个不在意,但这些名词有时候实在让人迷惑,对想学习计算机知识的人来说,搞懂它也十分重要,我也是在学习中慢慢了解了一些这方面的知识。
1854 0
|
存储 算法 Java
【字符编码】字符编码 && Base64编码算法
  在前面的解决乱码的一文中,只找到了解决办法,但是没有为什么,说白了,就是对编码还是不是太熟悉,编码问题是一个很简单的问题,计算机从业人员应该也必须弄清楚,基于编码的应用有Base64加密算法,然后,这个问题一直放着,想找个机会解决。于是乎,终于逮到机会,开始下手。
208 0
【字符编码】字符编码 && Base64编码算法