标签:编码 UTF 16 32 0x00 Unicode
上一篇《字符编码发展史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+0041 |
A |
0x0041 |
0x41 0x00 |
0x00 0x41 |
U+03A9 |
Ω |
0x03A9 |
0xA9 0x03 |
0x03 0xA9 |
U+6653 |
晓 |
0x6653 |
0x53 0x66 |
0x66 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的码点编号。
\ |
0xDC00 |
0xDC01 |
… |
0xDFFF |
0xD800 |
U+10000 |
U+10001 |
… |
U+103FF |
0xD801 |
U+10400 |
U+10401 |
… |
U+107FF |
⋮ |
⋮ |
⋮ |
⋱ |
⋮ |
0xDBFF |
U+10FC00 |
U+10FC01 |
… |
U+10FFFF |
举例如下
Unicode |
字符 |
UTF-16(码元) |
UTF-16 LE(字节) |
UTF-16 BE(字节) |
U+2A6A5 |
标签:编码,UTF,16,32,0x00,Unicode
From: https://www.cnblogs.com/luoweifu/p/18450752
相关文章
- Codeforces Round 316 (Div. 2) D题 Tree Requests(二分,dfs,在线,前缀异或)
题目链接CodeforcesRound316(Div.2)D题TreeRequests思路将262626个字母全部当作一个二进制数。将每个深度的结点按照dfs序放到一个vector里,同时记录每个vector...... - Solution - Atcoder ARC116C Multiple Sequences
一个\(\mathcal{O}(m^{\frac{3}{4}}\logm)\)做法。令\(a_0=1\)。对于倍数问题,考虑类似差分的思想,定义\(b_i=\frac{a_i}{a_{i-1}}(1\lei\len)\),那么合法的\(a\)和\(b\)是双射的,就只需要考虑对\(b\)计数了。考虑到因为有\(\prod\limits_{i=1}^nb_i\lem\)...... - 2024初秋集训——提高组 #32
B.序列删除题目描述有一个长度为\(2N\)的序列\(A\),其中\(1\)到\(N\)恰好出现两次。你每次可以选择两个相同的数\(A_l,A_r(l<r)\)并花费\(r-l\)的代价将其删除。求将整个序列删空的最小代价。思路有一个很显然的贪心就是:每次取代价最小的两个数删除。所以我们按照...... - 基于3peak 17串AFE芯片TPB76016-QP3R的电池BMS控制板方案
随着电动汽车、可再生能源存储设备以及便携式电子产品的普及,对高效、安全的电池管理系统(BMS)需求日益增加。17通道高精度电池管理产品—TPB76016,内置高精度基准,工作温度支持-40°Cto+125°C,可广泛应用于动力电池、储能电池、以及其他消费类电池的BMS控制板。TPB76016-QP3R产品...... - P3250 网络 题解
Solution单次二分:问“重要度\(\gex\)的所有操作,且\(t\)时间点还存在的所有操作中,是否有不经过这个点的”整体二分:保持操作、询问按时间有序,即预先按时间排序,下传时保持有序;对于一次Solve,对于所有重要度\(\gemid+1\)的操作(加入、删除),考虑与询问按时间混合排序,然后依次...... - P3215 括号修复 题解
Statement维护一个括号序列,有以下操作:区间覆盖区间翻转区间反转(左括号变右括号,右括号变左括号)区间问最少改多少位能使括号序列合法,保证有解Solution单纯没想到答案怎么算。。。首先一段括号序,如果消除中间的所有匹配,最终一定形如))))(((,这个信息是可合并的设这时左括...... - P5416 = UOJ 198 时空旅行 题解
Statement一棵树,每个节点上有一个集合,每个儿子集合由父亲集合增加一个点\((x_i,c_i)\)或删除一个点得到。根节点集合为\(\{(0,0,0,c_0)\}\)多次询问,每次问\(u\)点的集合内,\(\min\{(x_i-x)^2+c_i\}\)Solution首先你认真读完题发现原题中\(y,z\)都是没用的然后离线DFS...... - P3332 K大数查询 题解
Solution整体二分板子题vector太好写了111#include<bits/stdc++.h>usingnamespacestd;#definerep(i,j,k)for(inti=(j);i<=(k);++i)#definereo(i,j,k)for(inti=(j);i>=(k);--i)typedeflonglongll;constintN=50010;intn,m,ans[...... - 2024-2025-1 20241320 《计算机基础与程序设计》第2周学习总结
2024-2025-120241320《计算机基础与程序设计》第2周学习总结作业信息|这个作业属于哪个课程|https://www.cnblogs.com/rocedu/p/9577842.html|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02|这个作业的目标|数字化信息安全自学教材《计算...... - 2024-2025-1 20241316 《计算机基础与程序设计》第二周学习总结
2024-2025-120241316《计算机基础与程序设计》第二周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第二周作业这个作业的目标*自学教材计算机科学概论(第七版)第1章并完成云班课测试*......
|