字符编码发展史5 — UTF-16和UTF-32

上一篇《字符编码发展史4 — Unicode与UTF-8》我们讲解了Unicode字符集与UTF-8编码。本篇我们将继续讲解字符编码的第三个发展阶段中的UTF-16和UTF-32。

2.3. 第三个阶段 国际化

2.3.2. Unicode的编码方式

2.3.2.2. UTF-16

UTF-16也是一种变长编码,对于一个Unicode字符被编码成1至2个码元,每个码元为2个字节(16位)。UTF-16编码会有字节序的问题,所以根据大小端又分为大端UTF-16(UTF-16 BE)和小端UTF-16(UTF-16 LE)。

1. 基本平面(码点范围U+0000-U+FFFF)

在基本多语言平面内的码位UTF-16编码使用1个码元且其值与Unicode是相等的(不需要转换)。举例如下:

Unicode字符UTF-16(码元)UTF-16 LE(字节)UTF-16 BE(字节)
U+0041A0x00410x41 0x000x00 0x41
U+03A9Ω0x03A90xA9 0x030x03 0xA9
U+66530x66530x53 0x660x66 0x53
2. 辅助平面(码点范围U+10000-U+10FFFF)

辅助平面的码点在UTF-16中被编码为一对双字节(16位)的码元(即32位,4字节),称作代理对(surrogate pair),编号范围:0xD800~0xDFFF,也就是前文提到的代理区的范围。这也就是为什么基本多语言平面会保留一块代理区(0xD800~0xDFFF)的码点不定义任何字符的原因。

组成代理对的两个码元前一个称为前导代理(lead surrogates)范围为0xD800-0xDBFF,可表达1024(2^10)个码元;后一个称为后尾代理(trail surrogates)范围为0xDC00-0xDFFF,可表达1024(2^10)个码元。这样两个码元组合在一起就可以表达 2^20(2^10 * 2 ^ 10)个编码,正好和辅助平面的码点范围U+10000-U+10FFFF对应。

UTF-16辅助平面代理对与Unicode的对应关系如下表。

  • 第一列: 表示前导代理。
  • 第一行: 表示后尾代理。
  • 表格内容: 表示Unicode的码点编号。
\0xDC000xDC010xDFFF
0xD800U+10000U+10001U+103FF
0xD801U+10400U+10401U+107FF
0xDBFFU+10FC00U+10FC01U+10FFFF

举例如下

Unicode字符UTF-16(码元)UTF-16 LE(字节)UTF-16 BE(字节)
U+2A6A5𪚥0xD869 0xDEA50x69 0xD8 0xA5 0xDE0xD8 0x69 0xDE 0xA5
3. 优缺点
  • 优点:
    1. 绝大部分的文字都可以用两个字节编码,对于CJK文字是比较节省空间的;
    2. 文本处理比UTF-8方便得多。
  • 缺点:
    1. 存储和传输需要考虑字节序的问题;
    2. 不兼容ASCII(准确的说是半兼容,编码值是一样的,只是需要用两个字节来表示)。
2.3.2.3. UTF-32
1. UTF-32的编码规则

UTF-32是一种定长编码,使用1个32bit的码元,其值与Unicode编码值相等。举例如下:

Unicode字符UTF-32(码元)UTF-32 LE(字节)UTF-32 BE(字节)
U+0041A0x000000410x41 0x00 0x00 0x000x00 0x00 0x00 0x41
U+03A9Ω0x000003A90xA9 0x03 0x00 0x000x00 0x00 0x03 0xA9
U+66530x000066530x53 0x66 0x00 0x000x00 0x00 0x66 0x53
U+2A6A5𪚥0x0002A6A50xA5 0xA6 0x02 0x000x00 0x02 0xA6 0xA5

UTF-32同样有大小端的问题。

2. 优缺点
  • 优点:是编码定长容易进行文本处理。
  • 缺点:是浪费存储空间及存在字节序的问题。
2.3.2.4. UCS-2 与 UCS-4

前文提到:历史上存在两个独立的尝试创立单一字符集的组织,即 国际标准化组织(ISO)和统一码联盟。统一码联盟除了收录字符集外,还制定过两套字符编码方案:UCS2和UCS4。

1. UCS-2

UCS-2是一种定长编码,编码范围为0x0000-0xFFFF,在基本多语言平面内与UTF-16是等价。UCS2没有类似于UTF-16中代理对的概念,所以对于0xD869 0xDEA5会识别成两个字符。所以它只能表示基本平面的字符,不能表示全部的Unicode字符。UCS2后来被UTF-16替代,现在基本已经被废弃了。

2. UCS-4

UCS-4的编码方式与UTF-32几乎一样,后来两个组织统一标准后,就变成了UTF-32。不过ISO组织规定Unicode的编码空间会限定在0x000000~0x10FFFF之间,而UCS4的编码范围能到0~0xFFFFFFFF。因此也可以认为:UTF-32 是 UCS-4 的一个子集。


未完待续…… 欲知后事如何,且看下回分解。

下回预告:字符编码发展史6 — BOM字节序标记。

历史文章推荐:

字符编码发展史4 — Unicode与UTF-8

字符编码发展史3 — GB2312/Big5/GBK/GB18030

字符编码发展史2 — ISO-8859-N

字符编码发展史1 — ASCII和EASCII


大家好,我是陌尘。

IT从业10年+, 北漂过也深漂过,目前暂定居于杭州,未来不知还会飘向何方。

搞了8年C++,也干过2年前端;用Python写过书,也玩过一点PHP,未来还会折腾更多东西,不死不休。

感谢大家的关注,期待与你一起成长。



【SunLogging】
扫码二维码,关注微信公众号,精彩内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440650.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1、如何查看电脑已经连接上的wifi的密码?

在电脑桌面右下角的如下位置:双击打开查看当前连接上的wifi的名字:ZTE-kfdGYX-5G 按一下键盘上的win R 键, 输入【cmd】 然后,按一下【回车】。 输入netsh wlan show profile ”wifi名称” keyclear : 输入完成后,按一下回车&…

浏览器前端向后端提供服务

WEB后端向浏览器前端提供服务是最常见的场景,前端向后端的接口发起GET或者POST请求,后端收到请求后执行服务器端任务进行处理,完成后向前端发送响应。 那浏览器前端向后端提供服务是什么鬼? 说来话长,长话短说。我在人…

AFSim仿真系统 --- 系统简解_06 平台及平台类型

平台及平台类型 在AFSIM模拟中,当在被模拟的场景中定义平台时,创建仿真实体(如车辆和结构)。 AFSIM是一个用于创建仿真的对象框架,而平台封装了对象的原则身份或定义。 平台可以拥有系统(或平台部分&#x…

自然语言处理-语言转换

文章目录 一、语言模型二、统计语言模型1.含义与方法2.存在的问题 三、神经语言模型1.含义与方法2.one-hot编码3.词嵌入-word2vec4.模型的训练过程 四、总结 自然语言处理(NLP)中的语言转换方法主要涉及将一种形式的语言数据转换为另一种形式&#xff0c…

[Cocoa]_[初级]_[使用NSNotificationCenter作为目标观察者实现时需要注意的事项]

场景 在开发Cocoa程序时,由于界面是用Objective-C写的。无法使用C的目标观察者[1]类。如果是使用第二种方案2[2],那么也需要增加一个代理类。那么有没有更省事的办法? 说明 开发界面的时候,经常是需要在子界面里传递数据给主界面&#xff0…

Windows 搭建 Gitea

一、准备工作 1. 安装 Git:Gitea 依赖 Git 进行代码管理,所以首先需要确保系统中安装了 Git。 下载地址:https://git-scm.com/downloads/win 2. 安装数据库(可选) 默认情况下,Gitea 使用 SQLite 作为内…

Nginx的基础讲解之重写conf文件

一、Nginx 1、什么是nginx? Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 2、用于什么场景 Nginx适用于各种规模的网站和应用程序,特别是需要高并发处理和负载均衡的场…

微信步数C++

题目: 样例解释: 【样例 #1 解释】 从 (1,1) 出发将走 2 步,从 (1,2) 出发将走 4 步,从 (1,3) 出发将走 4 步。 从 (2,1) 出发将走 2 步,从 (2,2) 出发将走 3 步,从 (2,3) 出发将走 3 步。 从 (3,1) 出发将…

AI 激活新势能,中小企业全媒体营销绽放无限可能

什么是全媒体营销: 全媒体营销是一种利用多种媒介渠道进行品牌、产品或服务推广的营销策略。它结合了传统媒体(如电视、广播、报纸、杂志)和新媒体(如互联网、社交媒体、移动应用等)的优势,以实现信息的广…

力扣之1322.广告效果

题目: sql建表语句: Create table If Not Exists Ads (ad_id int,user_id int,action ENUM (Clicked, Viewed, Ignored) ); Truncate table Ads; insert into Ads (ad_id, user_id, action) values (1, 1, Clicked); insert into Ads (ad_id, use…

【重学 MySQL】五十八、文本字符串(包括 enum set)类型

【重学 MySQL】五十八、文本字符串(包括 enum set)类型 CHAR 和 VARCHARTEXT 系列ENUMSET示例注意事项 在 MySQL 中,文本字符串类型用于存储字符数据。这些类型包括 CHAR、VARCHAR、TEXT 系列(如 TINYTEXT、TEXT、MEDIUMTEXT 和 L…

基于SSM的仿win10界面的酒店管理系统

基于SSM的仿win10界面的酒店管理系统 运行环境: jdk1.8 eclipse tomcat7 mysql5.7 项目技术: jspssm(springspringmvcmybatis)mysql 项目功能模块:基础功能、房间类型、楼层信息、附属功能

AtCoder ABC373 A-D题解

ABC372 的题解没写是因为 D 是单调栈我不会(⊙︿⊙) 比赛链接:ABC373 总结&#xff1a;wssb。听说 E 很水&#xff1f;有时间我看看。 Problem A: Code #include <bits/stdc.h> using namespace std; int mian(){int ans0;for(int i1;i<12;i){string S;cin>&g…

[Offsec Lab] ICMP Monitorr-RCE+hping3权限提升

信息收集 IP AddressOpening Ports192.168.52.218TCP:22,80 $ nmap -p- 192.168.52.218 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 de:b5:23:89:bb:9f:d4:1…

表面缺陷检测系统源码分享

表面缺陷检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

Redis篇(缓存机制 - 基本介绍)(持续更新迭代)

目录 一、缓存介绍 二、经典三缓存问题 1. 缓存穿透 1.1. 简介 1.2. 解决方案 1.3. 总结 2. 缓存雪崩 2.1. 简介 2.2. 解决方案 2.3. 总结 3. 缓存击穿 3.1. 简介 3.2. 解决方案 3.3. 总结 4. 经典三缓存问题出现的根本原因 三、常见双缓存方案 1. 缓存预热 1…

国外媒体宣发:怎么在海外电子杂志版上发布新闻稿-时代周刊Time发布新闻稿

时代周刊Time发布新闻稿 在全球化的浪潮中&#xff0c;新闻媒体扮演着传递信息、引导舆论、塑造公众认知的重要角色。作为国际知名的媒体品牌&#xff0c;时代周刊&#xff08;Time&#xff09;以其独特的视角和深入的报道&#xff0c;为全球读者提供了一扇观察世界的窗口。近…

深度学习:GAN图像生成

GAN的诞生背景 诞生&#xff1a; 2014年由Ian Goodfellow提出 创新性&#xff1a; 无监督学习&#xff1a;GAN 提供了一种新的方法来进行无监督学习&#xff0c;即不需要对训练数据进行标注就可以学习到数据的潜在分布。对抗训练&#xff1a;通过引入对抗机制&#xff0c;G…

C语言文件操作(下)(28)

文章目录 前言一、文件的打开和关闭打开打开模式相对路径和绝对路径 关闭 二、文件操作正确流程三、文件顺序读写函数fopenfclosefputcfgetcfputsfgetsfprintffscanfsprintfsscanffwritefread 四、文件随机读写函数fseekftellrewind 五、文件读取结束时候的判断feofferror具体例…

Mysql锁机制解读(敲详细)

目录 锁的概念 全局锁 表级锁 表锁 元数据锁 意向锁 锁的概念 全局锁 表级锁 表锁 元数据锁 主要是对未提交事务&#xff0c;修改表结构造成表结构混乱&#xff0c;进行控制。 在不涉及表结构变化的情况下,元素锁可以忽略。 意向锁 避免有行级锁影响加表级锁&#xff0…