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

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

带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(3) https://developer.aliyun.com/article/1240886?groupCode=tech_library


10.4、UTF-16(Java内部编码)


UTF是Unicode Transfer Format的缩写,即把Unicode转做某种格式的意思,所以UTF-16是Unicode编码里的其中一种实现方式,16代表的是字节位数,占两个字节(UTF-32则表示4个字节)。


Unicode 设计之初是采用UTF-16这种双字节定长编码的,其字符编号就是对应的二进制编号,也就是说第二层的CCS和第三层的CEF是一致的。比如汉字“万”的 Unicode 码点是 “U+4E07”,其二进制序列就是直译的“0100 1110 0000 0111 ”,这种编码方式的优点是高效,不需要检查标志位,但缺点是不兼容ASCII,ASCII编码的文本都会显示乱码。


不过:后来Unicode联盟发现 16 位编码空间根本不够用,与此同时 ISO/IEC组织也觉得 UCS的 32 位编码空间太多了,实际中根本没有几十亿字符,也挺浪费空间的。


所以最终 Unicode 联盟和 ISO/IEC 工作组达成一致:两者使用统一的编码空间“ 0000 ~ 10FFFF”(即 UCS 保证永远不分配大于 10FFFF 的字符码点),而且双方在字符编码上保持同步,即一方标准中增加了字符,也要通知另一方同步。


于是:Unicode在UTF-16基础上拓展编码空间到 21 位,UCS则搞了一个双字节的UCS-2编码实现。


UTF-16 编码是双字节的,上限也只有6w多个码点,怎么让他支持到10FFFF(100w+)个码点呢?


本质就是:多加几个字节来表示更多的字符,只是UTF-16不像UCS那样采用定长4字节,而是使用变长的形式,但是这个跟UTF-8变长方式又不太一样,他是采用代理对的方式实现,大部分常用字符用一个码元表示(定长2个字节),其他扩展的特殊字符用两个码元表示(定长4字节)。



带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5) https://developer.aliyun.com/article/1240883?groupCode=tech_library

相关文章
|
传感器 人工智能 自然语言处理
智能编码助手通义灵码新体验
通义灵码4月发布全新编程智能体,可基于开发者需求描述,通过工程检索、文件编辑与终端操作等工具完成多文件修改及端到端编码任务。新增支持Qwen3系列模型,参数量235B,性能领先全球顶尖模型,成本更低且推理更高效。智能体具备自主决策与环境感知能力,深度集成MCP广场2400+服务,支持灵活切换会话模式,并优化上下文选择交互体验。此外,还强化了工程内定位跳转、代码补全、网络连接等功能,大幅提升开发效率,是不可多得的编程助手。
|
监控 网络协议 程序员
不再困惑!一文搞懂TCP与UDP的所有区别
**TCP与UDP是网络协议,TCP提供可靠连接(面向连接、顺序传输、错误检查),适合HTTP、FTP、SMTP等需要数据完整性的应用。UDP则是无连接、快速但不可靠,常用于DNS、RIP、SNMP等实时或效率优先的场景。**
1193 0
|
消息中间件 编解码 人工智能
函数计算应用场景
本文介绍函数计算的典型应用场景,包括Web应用、数据ETL处理、AI推理、视频转码等
445 2
|
数据可视化 测试技术 uml
UML的五种视图——Rational Rose的四种视图
UML的五种视图——Rational Rose的四种视图
1475 0
|
机器学习/深度学习 存储 人工智能
cv算法工程师成长路线
cv算法工程师成长路线
685 0
|
存储
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5)
371 0
|
存储 编解码
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(1)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(1)
488 0
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(3)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(3)
529 0
|
自然语言处理
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(2)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(2)
413 0